)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-05-10 04:57:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HDS Cinder Driver. Rev #1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"blueprint hds-hus-iscsi-cinder-driver"},{"line_number":10,"context_line":"* Fix pep8 issues for sample XML file as picked up by Jenkins."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2FaHI%3D","line":7,"updated":"2013-05-10 15:45:08.000000000","message":"Hi,\n\nthere\u0027s no need for adding Rev #1 here","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-05-10 04:57:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HDS Cinder Driver. Rev #1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"blueprint hds-hus-iscsi-cinder-driver"},{"line_number":10,"context_line":"* Fix pep8 issues for sample XML file as picked up by Jenkins."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2FZ6s%3D","line":7,"in_reply_to":"AAAAOn%2F%2FaHI%3D","updated":"2013-05-11 00:57:26.000000000","message":"That is just for our internal tracking. Thanks.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-05-10 04:57:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HDS Cinder Driver. Rev #1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"blueprint hds-hus-iscsi-cinder-driver"},{"line_number":10,"context_line":"* Fix pep8 issues for sample XML file as picked up by Jenkins."},{"line_number":11,"context_line":"* Fix Jenkins pep8 issues for code, which were missed by plain run of pep8."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2FaHA%3D","line":8,"updated":"2013-05-10 15:45:08.000000000","message":"Even though there\u0027s a blueprint, it is always good to add a brief / long description of what the patch does. The idea is to let reviewers know relevant details about the patch so that they can do a better job.\n\nCould you please add such description?","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-05-10 04:57:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"HDS Cinder Driver. Rev #1"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"blueprint hds-hus-iscsi-cinder-driver"},{"line_number":10,"context_line":"* Fix pep8 issues for sample XML file as picked up by Jenkins."},{"line_number":11,"context_line":"* Fix Jenkins pep8 issues for code, which were missed by plain run of pep8."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2FZ6k%3D","line":8,"in_reply_to":"AAAAOn%2F%2FaHA%3D","updated":"2013-05-11 00:57:26.000000000","message":"This is Rev 1 of a new driver from HDS. Not really a patch! I shall add something to that effect. Thanks.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"blueprint hds-hus-iscsi-cinder-driver"},{"line_number":10,"context_line":"This is the first rev of Hitachi Data Systems Cinder iSCSI driver."},{"line_number":11,"context_line":"This driver works with HUS (df850) array."},{"line_number":12,"context_line":"Amended into this submission are changes from code-reviews."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Docimpact: Bug #1180648"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAPH%2F%2FpMk%3D","line":12,"updated":"2013-05-28 18:12:12.000000000","message":"Would you like to mention the features this driver provides and which it doesnt? e.g. copy image \u003c--\u003e volume, etc?","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"}],"cinder/exception.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaMI%3D","line":430,"updated":"2013-05-10 15:45:08.000000000","message":"Hey,\n\nWould you mind to chime in here? It\u0027s about exceptions being translated.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-May/008881.html","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"76bbf613d9073c11212f6d9cee43c2b732e46d7e","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAO3%2F%2F%2Bt8%3D","line":430,"in_reply_to":"AAAAOn%2F%2FZ7A%3D","updated":"2013-05-16 03:52:58.000000000","message":"Flavio, I understand your point better. Agree with the ML link that you have provided:  there is not much to gain by double i18n translation of a message.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZ7A%3D","line":430,"in_reply_to":"AAAAOn%2F%2FaMI%3D","updated":"2013-05-11 00:57:26.000000000","message":"I am just conforming to all the exceptions listed in that parent class. If somebody wants to have them untranslated, I am fine with it. I think your point applies to many such instances here, if I understand it correctly.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d1e2577a3d805065705645ac064b79be8ab57a28","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY3E%3D","line":430,"updated":"2013-05-11 17:10:58.000000000","message":"I think Flavio is asking specifically for your input on the ML regarding the question of translation on the exception.  I don\u0027t think having your particular exception be one of is the intent at all (nor is fixing all of them).\n\nThe reality is we\u0027ve got some funny business going on with exceptions, including double translation (translating the formation of the message in the source file, and translating again here in the exception class) among other questions about whether we should translate exceptions at all etc.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5f848095c1d9365705ae72cc05e5cad0cf4f3eb5","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW00%3D","line":430,"in_reply_to":"AAAAOn%2F%2FXaU%3D","updated":"2013-05-13 19:17:11.000000000","message":"Thanks, I shall look at the link. That sets the context for me :-)","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ceec9a9de094eaaa3e4a9980b9da1f2a28216424","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXaU%3D","line":430,"in_reply_to":"AAAAOn%2F%2FXgY%3D","updated":"2013-05-13 14:51:32.000000000","message":"Mail List (http://lists.openstack.org/pipermail/openstack-dev/2013-May/008881.html)","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"147866c2ae6906bf011dd14efcce53861be78c48","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"class ParameterNotFound(NotFound):"},{"line_number":430,"context_line":"    message \u003d _(\"Could not find parameter %(param)s\")"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"class PasteAppNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXgY%3D","line":430,"in_reply_to":"AAAAOn%2F%2FY3E%3D","updated":"2013-05-13 13:51:15.000000000","message":"Pardon me, what is ML?","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"}],"cinder/tests/test_hds.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# Authors:"},{"line_number":18,"context_line":"#    Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaH8%3D","line":17,"updated":"2013-05-10 15:45:08.000000000","message":"General question: Are author\u0027s names allowed to be here? Shouldn\u0027t the Copyright line be enough?","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# Authors:"},{"line_number":18,"context_line":"#    Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZ6Y%3D","line":17,"in_reply_to":"AAAAOn%2F%2FaH8%3D","updated":"2013-05-11 00:57:26.000000000","message":"Please have a look at storwize_svc.py.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"           \u0027volume_type\u0027: None, \u0027provider_location\u0027: None, \u0027id\u0027: \u0027abcdefg\u0027}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class HUSiSCSIDriverTest(test.TestCase):"},{"line_number":39,"context_line":"    \"\"\"Test HUS iSCSI volume driver.\"\"\""},{"line_number":40,"context_line":"    def setUp(self):"},{"line_number":41,"context_line":"        \"\"\"setUp\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaLU%3D","line":38,"updated":"2013-05-10 15:45:08.000000000","message":"Why is it that none of the tests bellow have asserts? I mean, their are not \"required\" in order to call this a test but I\u0027d definitely expect / want to see some","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"           \u0027volume_type\u0027: None, \u0027provider_location\u0027: None, \u0027id\u0027: \u0027abcdefg\u0027}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class HUSiSCSIDriverTest(test.TestCase):"},{"line_number":39,"context_line":"    \"\"\"Test HUS iSCSI volume driver.\"\"\""},{"line_number":40,"context_line":"    def setUp(self):"},{"line_number":41,"context_line":"        \"\"\"setUp\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZNQ%3D","line":38,"in_reply_to":"AAAAOn%2F%2FaLU%3D","updated":"2013-05-11 00:57:26.000000000","message":"Asserts added. These tests have exceptions. So in case of failure the test would have bombed. But now I have added asserts to some of these test routines.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":64,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_create_snapshot(self):"},{"line_number":67,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":68,"context_line":"        self._mox.StubOutWithMock(self.driver, \u0027_id_to_vol\u0027)"},{"line_number":69,"context_line":"        self.driver._id_to_vol(vol[\u0027volume_id\u0027]).AndReturn(vol)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaL0%3D","line":66,"updated":"2013-05-10 15:45:08.000000000","message":"Hey,\n\nPlease, don\u0027t use the prefix test_ if it is meant to be a utility method, otherwise it\u0027ll be executed by the test runner. If it is meant to be a test, I\u0027d expect to see some asserts in it.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":64,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_create_snapshot(self):"},{"line_number":67,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":68,"context_line":"        self._mox.StubOutWithMock(self.driver, \u0027_id_to_vol\u0027)"},{"line_number":69,"context_line":"        self.driver._id_to_vol(vol[\u0027volume_id\u0027]).AndReturn(vol)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZ50%3D","line":66,"in_reply_to":"AAAAOn%2F%2FaL0%3D","updated":"2013-05-11 00:57:26.000000000","message":"asserts added. \n\nThanks.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        svol \u003d self.test_create_snapshot()"},{"line_number":79,"context_line":"        self.driver.delete_snapshot(svol)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_create_volume_from_snapshot(self):"},{"line_number":82,"context_line":"        svol \u003d self.test_create_snapshot()"},{"line_number":83,"context_line":"        vol \u003d self.driver.create_volume_from_snapshot(_VOLUME, svol)"},{"line_number":84,"context_line":"        return vol"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaLw%3D","line":81,"updated":"2013-05-10 15:45:08.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        vol \u003d self.driver.create_volume_from_snapshot(_VOLUME, svol)"},{"line_number":84,"context_line":"        return vol"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_initialize_connection(self):"},{"line_number":87,"context_line":"        connector \u003d {}"},{"line_number":88,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":89,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaLs%3D","line":86,"updated":"2013-05-10 15:45:08.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d1e2577a3d805065705645ac064b79be8ab57a28","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# Authors:"},{"line_number":18,"context_line":"#    Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY3A%3D","line":17,"updated":"2013-05-11 17:10:58.000000000","message":"I\u0027d prefer to leave this out, the copyright is sufficient, we\u0027re *all* authors of these files.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5f848095c1d9365705ae72cc05e5cad0cf4f3eb5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# Authors:"},{"line_number":18,"context_line":"#    Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW1U%3D","line":17,"in_reply_to":"AAAAOn%2F%2FXaI%3D","updated":"2013-05-13 19:17:11.000000000","message":"I shall fix this. NP.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ceec9a9de094eaaa3e4a9980b9da1f2a28216424","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# Authors:"},{"line_number":18,"context_line":"#    Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXaI%3D","line":17,"in_reply_to":"AAAAOn%2F%2FXgk%3D","updated":"2013-05-13 14:51:32.000000000","message":"Copyrights are fine, the Authors is what\u0027s odd and yes I understand others have done it but we all make mistakes :)","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"147866c2ae6906bf011dd14efcce53861be78c48","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# Authors:"},{"line_number":18,"context_line":"#    Lakhinder Walia \u003clakhinder.walia@hds.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXgk%3D","line":17,"in_reply_to":"AAAAOn%2F%2FY3A%3D","updated":"2013-05-13 13:51:15.000000000","message":"John I can leave copyrights out. But I am just following a precedent here. Please look at storwize.py, xiv.py","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"715e900e10e4e061fc281df4b22e14ae48d5aaab","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume import configuration as conf"},{"line_number":27,"context_line":"from cinder.volume.drivers.hds import hds"},{"line_number":28,"context_line":"import mox"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYLU%3D","line":28,"updated":"2013-05-13 03:13:34.000000000","message":"Please move this import before all openstack related imports since this is import of standard/3rd party library.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"147866c2ae6906bf011dd14efcce53861be78c48","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume import configuration as conf"},{"line_number":27,"context_line":"from cinder.volume.drivers.hds import hds"},{"line_number":28,"context_line":"import mox"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXgw%3D","line":28,"in_reply_to":"AAAAOn%2F%2FYLU%3D","updated":"2013-05-13 13:51:15.000000000","message":"OK. Thanks.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c7533a3f6f3c34f560bb1638de2a3ff85a68bd6f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":91,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":92,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":93,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":94,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":95,"context_line":"        return (vol, connector)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F%2BU%3D","line":93,"updated":"2013-05-15 06:19:50.000000000","message":"just call initialize_connection() with setting _unused.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2bfbfb4c10cbd02c9d9ced36fe85477c1eb44a6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":91,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":92,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":93,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":94,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":95,"context_line":"        return (vol, connector)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2BsU%3D","line":93,"in_reply_to":"AAAAO3%2F%2F%2F%2BU%3D","updated":"2013-05-16 03:53:29.000000000","message":"I am assuming you mean \u0027without\u0027 instead of \u0027with\u0027.\n\nThis style is okay with pylint, actually. As long as unused variables start with an underscore.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.driver \u003d hds.HUSDriver(configuration\u003dself.configuration)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_volume_stats(self):"},{"line_number":55,"context_line":"        self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_create_volume(self):"},{"line_number":58,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9W8%3D","line":55,"updated":"2013-05-16 04:48:13.000000000","message":"Should probably test something here.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.driver \u003d hds.HUSDriver(configuration\u003dself.configuration)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_volume_stats(self):"},{"line_number":55,"context_line":"        self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_create_volume(self):"},{"line_number":58,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F86c%3D","line":55,"in_reply_to":"AAAAO3%2F%2F9W8%3D","updated":"2013-05-16 10:42:58.000000000","message":"Thanks. Will do. \n\nBut I think it is more fun to test it before and after creating a volume and \u0027using\u0027 that volume :-)","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_create_volume(self):"},{"line_number":58,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"},{"line_number":59,"context_line":"        self.assertNotEqual(loc, None)"},{"line_number":60,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":61,"context_line":"        # save provider_location for future reference."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9Wo%3D","line":58,"updated":"2013-05-16 04:48:13.000000000","message":"I\u0027d like to see you mocking the backend here that the driver uses to do the actual creates.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_create_volume(self):"},{"line_number":58,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"},{"line_number":59,"context_line":"        self.assertNotEqual(loc, None)"},{"line_number":60,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":61,"context_line":"        # save provider_location for future reference."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F87A%3D","line":58,"in_reply_to":"AAAAO3%2F%2F9Wo%3D","updated":"2013-05-16 10:42:58.000000000","message":"Backend is already initiated in a simulated state, so you don\u0027t see any call to mock the backend here. It is done in setup(), and from there all the backend calls are simulated.\n\nIf you see how the HDS driver is written, it is going through exactly the same logic (in hds.py) as in live conditions.\n\nThanks.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.assertNotEqual(loc, None)"},{"line_number":60,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":61,"context_line":"        # save provider_location for future reference."},{"line_number":62,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":63,"context_line":"        self.vol_1 \u003d vol"},{"line_number":64,"context_line":"        return vol"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9Ws%3D","line":62,"updated":"2013-05-16 04:48:13.000000000","message":"Shouldn\u0027t we be testing the value of the provider location here?  It\u0027s an important value that gets returned.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3eca7b7bcbd6d8c74151efb5b16d09ca37915e14","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.assertNotEqual(loc, None)"},{"line_number":60,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":61,"context_line":"        # save provider_location for future reference."},{"line_number":62,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":63,"context_line":"        self.vol_1 \u003d vol"},{"line_number":64,"context_line":"        return vol"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F8Dw%3D","line":62,"in_reply_to":"AAAAO3%2F%2F86g%3D","updated":"2013-05-16 17:28:08.000000000","message":"You need to test the value of provider location here and make sure it\u0027s populated with a good value.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.assertNotEqual(loc, None)"},{"line_number":60,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":61,"context_line":"        # save provider_location for future reference."},{"line_number":62,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":63,"context_line":"        self.vol_1 \u003d vol"},{"line_number":64,"context_line":"        return vol"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F86g%3D","line":62,"in_reply_to":"AAAAO3%2F%2F9Ws%3D","updated":"2013-05-16 10:42:58.000000000","message":"Sure, will do.\n\nBut the real test IMO is when you delete that volume. hds.py uses that \u0027provider_location\u0027 then! And delete of a volume goes through its full cycle of a call to the back_end etc based on the \u0027provider_location\u0027, just like in a live situation.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return vol"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_delete_volume(self):"},{"line_number":67,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":68,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_create_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9Wk%3D","line":67,"updated":"2013-05-16 04:48:13.000000000","message":"I\u0027d also like to see you mocking the driver\u0027s backend here as well to ensure that a delete happens from the driver\u0027s perspective.  In fact all of the test_* methods here should be mocking the self.driver.bend member.\n\nTake a look at some of the other drivers that mock the backend array.  The 3PAR drivers do this for their unit tests.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return vol"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_delete_volume(self):"},{"line_number":67,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":68,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_create_snapshot(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F86U%3D","line":67,"in_reply_to":"AAAAO3%2F%2F9Wk%3D","updated":"2013-05-16 10:42:58.000000000","message":"Thanks for your feedback. As I said above, there is full simulation of the backend going on here. And all the test_* methods invoke the backend calls. hds.py is written that way: it would not return unless backend call succeeds or fails!","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":41,"context_line":"        super(HUSiSCSIDriverTest, self).__init__(*args, **kwargs)"},{"line_number":42,"context_line":"        self.vol_1 \u003d {}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def setUp(self):"},{"line_number":45,"context_line":"        self._mox \u003d mox.Mox()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Kc%3D","line":42,"updated":"2013-05-16 16:49:47.000000000","message":"What\u0027s vol_1 for?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":41,"context_line":"        super(HUSiSCSIDriverTest, self).__init__(*args, **kwargs)"},{"line_number":42,"context_line":"        self.vol_1 \u003d {}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def setUp(self):"},{"line_number":45,"context_line":"        self._mox \u003d mox.Mox()"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F76M%3D","line":42,"in_reply_to":"AAAAO3%2F%2F8Kc%3D","updated":"2013-05-16 20:40:51.000000000","message":"Thanks. The plan was to do a little more contextual testing. And I would use it in future. This variable is initialized here in __init__(), is that your question, I mean in __init__()?\n\nOr if you want, I can remove the variable for now.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":47,"context_line":"        base_path \u003d \u0027cinder/volume/drivers/hds\u0027"},{"line_number":48,"context_line":"        conf_file \u003d base_path + \u0027/\u0027 + \u0027cinder_hds_conf_sample.xml\u0027"},{"line_number":49,"context_line":"        self.configuration.hds_cinder_config_file \u003d conf_file"},{"line_number":50,"context_line":"        self.configuration.hds_simulated_back_end \u003d \u0027True\u0027"},{"line_number":51,"context_line":"        super(HUSiSCSIDriverTest, self).setUp()"},{"line_number":52,"context_line":"        self.driver \u003d hds.HUSDriver(configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8M0%3D","line":49,"updated":"2013-05-16 16:49:47.000000000","message":"Why do you need base_path and conf_file?  Just do\n\nself.configuration.hds_cinder_config_file \u003d cinder/volume/drivers/hds/cinder_hds_conf_sample.xml","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":47,"context_line":"        base_path \u003d \u0027cinder/volume/drivers/hds\u0027"},{"line_number":48,"context_line":"        conf_file \u003d base_path + \u0027/\u0027 + \u0027cinder_hds_conf_sample.xml\u0027"},{"line_number":49,"context_line":"        self.configuration.hds_cinder_config_file \u003d conf_file"},{"line_number":50,"context_line":"        self.configuration.hds_simulated_back_end \u003d \u0027True\u0027"},{"line_number":51,"context_line":"        super(HUSiSCSIDriverTest, self).setUp()"},{"line_number":52,"context_line":"        self.driver \u003d hds.HUSDriver(configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F76A%3D","line":49,"in_reply_to":"AAAAO3%2F%2F8M0%3D","updated":"2013-05-16 20:40:51.000000000","message":"Don\u0027t really need it. Originally, it was just an effort to get past a line that was becoming 80+ characters :-)","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        base_path \u003d \u0027cinder/volume/drivers/hds\u0027"},{"line_number":48,"context_line":"        conf_file \u003d base_path + \u0027/\u0027 + \u0027cinder_hds_conf_sample.xml\u0027"},{"line_number":49,"context_line":"        self.configuration.hds_cinder_config_file \u003d conf_file"},{"line_number":50,"context_line":"        self.configuration.hds_simulated_back_end \u003d \u0027True\u0027"},{"line_number":51,"context_line":"        super(HUSiSCSIDriverTest, self).setUp()"},{"line_number":52,"context_line":"        self.driver \u003d hds.HUSDriver(configuration\u003dself.configuration)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8ME%3D","line":50,"updated":"2013-05-16 16:49:47.000000000","message":"As I wrote - this shouldn\u0027t be a config option.  Why not self.driver.hds_simulated_back_end?  And why \u0027True\u0027 rather than True?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_volume_stats(self):"},{"line_number":55,"context_line":"        stats \u003d self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":"        self.assertEqual(stats[\"vendor_name\"], \"HDS\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_create_volume(self):"},{"line_number":59,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8K8%3D","line":56,"updated":"2013-05-16 16:49:47.000000000","message":"If you went through the trouble of simulating free capacity, why not also check it to make sure you don\u0027t have parsing errors?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d45dbca8757148b1d996ee6782837c62fe690771","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_volume_stats(self):"},{"line_number":55,"context_line":"        stats \u003d self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":"        self.assertEqual(stats[\"vendor_name\"], \"HDS\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_create_volume(self):"},{"line_number":59,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8DA%3D","line":56,"in_reply_to":"AAAAO3%2F%2F8K8%3D","updated":"2013-05-16 17:31:09.000000000","message":"Need more valuable tests here other than the vendor_name","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_volume_stats(self):"},{"line_number":55,"context_line":"        stats \u003d self.driver.get_volume_stats(True)"},{"line_number":56,"context_line":"        self.assertEqual(stats[\"vendor_name\"], \"HDS\")"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_create_volume(self):"},{"line_number":59,"context_line":"        loc \u003d self.driver.create_volume(_VOLUME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F75w%3D","line":56,"in_reply_to":"AAAAO3%2F%2F8K8%3D","updated":"2013-05-16 20:40:51.000000000","message":"Sorry, I don\u0027t get it. What parsing errors are you referring to?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d45dbca8757148b1d996ee6782837c62fe690771","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":62,"context_line":"        # save provider_location for future reference."},{"line_number":63,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":64,"context_line":"        self.assertNotEqual(loc[\u0027provider_location\u0027], None)"},{"line_number":65,"context_line":"        self.vol_1 \u003d vol"},{"line_number":66,"context_line":"        return vol"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8C4%3D","line":64,"updated":"2013-05-16 17:31:09.000000000","message":"You should be testing for a valid provider_location here other than None.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        vol \u003d _VOLUME.copy()"},{"line_number":62,"context_line":"        # save provider_location for future reference."},{"line_number":63,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":64,"context_line":"        self.assertNotEqual(loc[\u0027provider_location\u0027], None)"},{"line_number":65,"context_line":"        self.vol_1 \u003d vol"},{"line_number":66,"context_line":"        return vol"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F75s%3D","line":64,"in_reply_to":"AAAAO3%2F%2F8C4%3D","updated":"2013-05-16 20:40:51.000000000","message":"Sure. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":64,"context_line":"        self.assertNotEqual(loc[\u0027provider_location\u0027], None)"},{"line_number":65,"context_line":"        self.vol_1 \u003d vol"},{"line_number":66,"context_line":"        return vol"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_delete_volume(self):"},{"line_number":69,"context_line":"        \"\"\" Note: this API call should not expect any exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8KU%3D","line":66,"updated":"2013-05-16 16:49:47.000000000","message":"Why save vol?  I don\u0027t understand the point of lines 61-65.  Did I miss something?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        vol[\u0027provider_location\u0027] \u003d loc[\u0027provider_location\u0027]"},{"line_number":64,"context_line":"        self.assertNotEqual(loc[\u0027provider_location\u0027], None)"},{"line_number":65,"context_line":"        self.vol_1 \u003d vol"},{"line_number":66,"context_line":"        return vol"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def test_delete_volume(self):"},{"line_number":69,"context_line":"        \"\"\" Note: this API call should not expect any exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F75g%3D","line":66,"in_reply_to":"AAAAO3%2F%2F8KU%3D","updated":"2013-05-16 20:40:51.000000000","message":"Sorry, as I had mentioned above, I have some future plans to make the self test smarter than what they do today. \n\nI can take this variable out, if you like.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4a661ffd321663fdedf9f86b99d5b4b3ef7b3b3e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":103,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":104,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":105,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":106,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":107,"context_line":"        return (vol, connector)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Gw%3D","line":105,"updated":"2013-05-16 17:46:03.000000000","message":"My concern wasn\u0027t pylint. There is no reason to set this.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d45dbca8757148b1d996ee6782837c62fe690771","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":103,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":104,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":105,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":106,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":107,"context_line":"        return (vol, connector)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Cg%3D","line":105,"updated":"2013-05-16 17:31:09.000000000","message":"remove _unused","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":103,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":104,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":105,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":106,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":107,"context_line":"        return (vol, connector)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F75c%3D","line":105,"in_reply_to":"AAAAO3%2F%2F8Cg%3D","updated":"2013-05-16 20:40:51.000000000","message":"Sure. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        connector[\u0027initiator\u0027] \u003d \u0027iqn.1993-08.org.debian:01:11f90746eb2\u0027"},{"line_number":103,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":104,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":105,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":106,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":107,"context_line":"        return (vol, connector)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F75Y%3D","line":105,"in_reply_to":"AAAAO3%2F%2F8Gw%3D","updated":"2013-05-16 20:40:51.000000000","message":"OK. I shall remove it. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":104,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":105,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":106,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":107,"context_line":"        return (vol, connector)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_terminate_connection(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Jk%3D","line":106,"updated":"2013-05-16 16:49:47.000000000","message":"Why would connector be None?  Shouldn\u0027t you be testing the returned information?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        connector[\u0027host\u0027] \u003d \u0027dut_1.lab.hds.com\u0027"},{"line_number":104,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":105,"context_line":"        _unused \u003d self.driver.initialize_connection(vol, connector)"},{"line_number":106,"context_line":"        self.assertNotEqual(connector, None)"},{"line_number":107,"context_line":"        return (vol, connector)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_terminate_connection(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F75Q%3D","line":106,"in_reply_to":"AAAAO3%2F%2F8Jk%3D","updated":"2013-05-16 20:40:51.000000000","message":"Agreed. I shall test for more, as Walter also suggested. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27374147138e340b7d20360679b2b3922e442d09","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self._mox \u003d mox.Mox()"},{"line_number":45,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":46,"context_line":"        base_path \u003d \u0027cinder/volume/drivers/hds\u0027"},{"line_number":47,"context_line":"        conf_file \u003d base_path + \u0027/\u0027 + \u0027cinder_hds_conf_sample.xml\u0027"},{"line_number":48,"context_line":"        self.configuration.hds_cinder_config_file \u003d conf_file"},{"line_number":49,"context_line":"        self.configuration.hds_simulated_back_end \u003d \u0027True\u0027"},{"line_number":50,"context_line":"        super(HUSiSCSIDriverTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2F1%2B8%3D","line":47,"updated":"2013-05-21 21:55:53.000000000","message":"Let\u0027s either move this into this file as an xml object (perferrably) or as a compromise move it into the tests dir.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2a6fc091b0492440a1ef0881486d1136fe38085","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self._mox \u003d mox.Mox()"},{"line_number":45,"context_line":"        self.configuration \u003d mox.MockObject(conf.Configuration)"},{"line_number":46,"context_line":"        base_path \u003d \u0027cinder/volume/drivers/hds\u0027"},{"line_number":47,"context_line":"        conf_file \u003d base_path + \u0027/\u0027 + \u0027cinder_hds_conf_sample.xml\u0027"},{"line_number":48,"context_line":"        self.configuration.hds_cinder_config_file \u003d conf_file"},{"line_number":49,"context_line":"        self.configuration.hds_simulated_back_end \u003d \u0027True\u0027"},{"line_number":50,"context_line":"        super(HUSiSCSIDriverTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FuTw%3D","line":47,"in_reply_to":"AAAAPH%2F%2F1%2B8%3D","updated":"2013-05-24 13:05:23.000000000","message":"The file is removed. It is being generated now.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm%2BQ%3D","line":178,"updated":"2013-05-29 13:19:14.000000000","message":"Do you want to assert that the volume was deleted?  And maybe test the case where the volume doesn\u0027t exist to go along with your comment?","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"1b5db1016c86caec7ff37f175fd1ba02d6d184f1","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FlF4%3D","line":178,"in_reply_to":"AAAAPH%2F%2Fm%2BQ%3D","updated":"2013-05-30 02:43:35.000000000","message":"Avishay, \n\nIt would be useful to actually verify that the volume that was created in the (back-end) array was indeed deleted! But that would have to be via some out-of-band mechanism to firstly record what volume was created, and then verify that it does not exist any more! And this test can be used for both a case where a volume exists, or does not! \n\nThere are many such complicated scenarios that can be tested, but I would prefer that we compile them here: https://github.com/openstack/cinder/blob/master/cinder/testing/README.rst. I am willing to gather some test criterion from the community, if you feel that is the right direction.\n\nAnd I can then retrofit all the new criterion into our driver self-tests as well.\n\nThanks.","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4ffd26dd54c55e0ea10322e22ac417557c485dde","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2Fj1o%3D","line":178,"updated":"2013-05-30 15:07:25.000000000","message":"This test isn\u0027t really doing anything useful.\n\nAs Avishay mentioned in the previous patch, you should be verifying that the driver actually deleted a volume.  This requires testing that volume create works as well.  Take a look at how the 3PAR driver mocks the backend and verifiies how a volume is created and then deleted.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5341390f572c6e190f6924a60f386ececee89307","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FfSs%3D","line":178,"in_reply_to":"AAAAPH%2F%2FgQE%3D","updated":"2013-06-01 02:02:46.000000000","message":"Walter, thanks for clarifying what are you looking for in the self test. That helped me instrument what you wanted.\n\nYes, it did take me some to write my response earlier, which still stands on its technical merit, but no point discussing it any further.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3e73d71576abc25bcca46d28d7ed661563a42d93","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FgQE%3D","line":178,"in_reply_to":"AAAAPH%2F%2FiTc%3D","updated":"2013-05-31 18:05:39.000000000","message":"I dunno, in the time that it took to write your response here, you could have spent the time to write a positive test on the mocked backend.  I really want to see SOME testing here.  \n\nAll you need to do is modify your SimulatedHusBackend class and keep track of volumes created in create_lu and delete_lu.  Then in the unit tests test_create_volume, make sure the volume exists in the SimulatedHusBackend object.   It\u0027s all of 10 lines of code and 5 minutes worth of work.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"1fc271a6386ba35411958c77225a3f98a917eaa8","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FiTc%3D","line":178,"in_reply_to":"AAAAPH%2F%2Fiec%3D","updated":"2013-05-31 01:03:20.000000000","message":"Walter, I do appreciate your concern. \n\nThere are technical reasons, as I have explained why in the live hds cinder volume driver, there will be no exception or error generated when a non-existent volume of an array is presented to delete_volume(). And this kind of anomaly (mismatch) can occur in any distributed system, not just between a Cinder volume driver and its Database. And I hope we can all agree on that reasoning. Obviously this anomaly/mismatch is outside the control of the hds volume driver here.\n\nSo we in hds have designed delete_volume() conservatively, to accommodate that anomaly/mismatch, which can show up in real life! \n\nAt the end of a delete_volume(), even in a real (i.e. not self test) scenario there is not always a solution to really verify that a volume has indeed been deleted! And what I mean by that is, if an array is shared between two cinder driver instances, one instance can come and delete a volume, but the second instance can come and create another volume with same LUN (i.e. number), before the first instance can try to infer if the LUN is invalid. But I digress here.\n\nSelf tests here emulate what the real life hds cinder driver scenario is! I don\u0027t see any other way of writing that delete test, unless we abandon the strategy of accommodating the above anomaly! That would lead to problems in the field, where a dangling entry in the database is practically in-curable.\n\nAnd BTW, we do validate create_volume, as you can see in the code! We validate any create_xxx() call in the self tests. And we purposely have designed delete_xxx() calls to be accommodating of anomalies, and self tests behave the same way!\n\nIn conclusion, going forward, I think every driver should submit tests for all their calls. Except that validation of any object delete call should occur only when logically possible.\n\nI am willing to work with you and Avishay in designing any self tests that we can agree upon for delete_volume(), and as I have mentioned to Avishay I can retrofit those changes later on!\n\nThanks for your cooperation.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b123079e8eb11d07ee58a3bc128b8981930a56a4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FjOk%3D","line":178,"in_reply_to":"AAAAPH%2F%2Fj1o%3D","updated":"2013-05-30 18:51:47.000000000","message":"Walter thanks for your comments.\n \nNot only we create a volume, and _verify_ it, our delete_volume is actually based on _first_ creating a volume and _then_ deleting it. So this test is actually a very real life like test, and very useful!\n\nThere might be a difference in philosophy as to what delete_volume should do in case when a fake volume is presented to it. Perhaps that discussion should be outside of code_review.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"50524a9ec15cac9d3dfab799cc46a57a797ae97b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2Fiec%3D","line":178,"in_reply_to":"AAAAPH%2F%2FjHw%3D","updated":"2013-05-30 23:05:24.000000000","message":"I may be being a pain in the rear here, but since create_volume and delete_volume are required capabilities of every driver in order to be accepted into Cinder, I would hope that every new driver being submitted had a requirement of doing validated unit tests on those required methods.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"b8e2f2fb0d842bb777b863161088ba143de5bfd5","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FjHw%3D","line":178,"in_reply_to":"AAAAPH%2F%2FjOk%3D","updated":"2013-05-30 19:19:26.000000000","message":"How about just make test_create_volume and test_create_snapshot be \"test_create_delete_xxxx\" and fold these up in to single tests.  Seems odd to call a test for a test. \n\nJust a thought... \n\nAlso, it seems to me that the point Walt and Avishay are trying to make is that there is NO check of anything on the delete call.  This just makes a call and forgets it, doesn\u0027t check for a response or do any sort of verfication of anything.  In other words, how does this test know that the call to delete passed?","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ab7d083cfa96049683e1c3b27c7ec41c811a2321","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        customer dashboard."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":"        vol \u003d self.test_create_volume()"},{"line_number":178,"context_line":"        self.driver.delete_volume(vol)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_create_snapshot(self):"},{"line_number":181,"context_line":"        vol \u003d self.test_create_volume()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FjH4%3D","line":178,"in_reply_to":"AAAAPH%2F%2FjOk%3D","updated":"2013-05-30 19:15:45.000000000","message":"I do not see where you are actually testing to see that a volume was deleted.   Your unit test simply makes a call to the driver to delete the volume.  Nowhere are you verifying that it\u0027s gone.","commit_id":"954e15fad362998b7586655ba023d52a3c09650f"}],"cinder/volume/drivers/hds/cinder_hds_conf_sample.xml":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"}],"source_content_type":"application/xml","patch_set":1,"id":"AAAAOn%2F%2FaHg%3D","line":1,"updated":"2013-05-10 15:45:08.000000000","message":"Any docs that could be add here?","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"}],"source_content_type":"application/xml","patch_set":1,"id":"AAAAOn%2F%2FZ7I%3D","line":1,"in_reply_to":"AAAAOn%2F%2FaHg%3D","updated":"2013-05-11 00:57:26.000000000","message":"Thanks, it is a good idea. But not for this rev.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c7533a3f6f3c34f560bb1638de2a3ff85a68bd6f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"}],"source_content_type":"application/xml","patch_set":2,"id":"AAAAO3%2F%2F%2F7k%3D","line":1,"updated":"2013-05-15 06:19:50.000000000","message":"Test fixtures should exist in cinder.tests. So far test fixtures of response schema just exist as a string in the test driver file itself. See cinder.tests.test_netapp for example.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2bfbfb4c10cbd02c9d9ced36fe85477c1eb44a6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"}],"source_content_type":"application/xml","patch_set":2,"id":"AAAAO3%2F%2F%2BsA%3D","line":1,"in_reply_to":"AAAAO3%2F%2F%2F7k%3D","updated":"2013-05-16 03:53:29.000000000","message":"Thanks for your feedback. The response is not an XML schema in this case.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4a661ffd321663fdedf9f86b99d5b4b3ef7b3b3e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"},{"line_number":5,"context_line":"  \u003cusername\u003esystem\u003c/username\u003e"}],"source_content_type":"application/xml","patch_set":4,"id":"AAAAO3%2F%2F8EE%3D","line":2,"updated":"2013-05-16 17:46:03.000000000","message":"I don\u0027t want test fixtures outside of cinder.test. thanks","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"},{"line_number":5,"context_line":"  \u003cusername\u003esystem\u003c/username\u003e"}],"source_content_type":"application/xml","patch_set":4,"id":"AAAAPH%2F%2F%2F1A%3D","line":2,"in_reply_to":"AAAAO3%2F%2F8EE%3D","updated":"2013-05-16 20:40:51.000000000","message":"This is more than a test fixture. It is also a sample file for a customer/admin to refer to. And it does not pollute the volume/drivers subdirectory by being in a separate (self contained) vendor (HDS) sub-directory.  I would prefer if vendors kept their stuff in one place, and not pollute files all over. This file could hypothetically go in etc sub-directory, or in cinder/tests sub-directory. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27374147138e340b7d20360679b2b3922e442d09","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"}],"source_content_type":"application/xml","patch_set":5,"id":"AAAAPH%2F%2F1%2Bo%3D","line":1,"updated":"2013-05-21 21:55:53.000000000","message":"To be honest, this isn\u0027t all that complex so I don\u0027t think there\u0027s a good reason to not just generate it as needed in your test and document the sample in openstack-manuals.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2a6fc091b0492440a1ef0881486d1136fe38085","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\" ?\u003e"},{"line_number":2,"context_line":"\u003cconfig\u003e"},{"line_number":3,"context_line":"  \u003cmgmt_ip0\u003e172.17.44.16\u003c/mgmt_ip0\u003e"},{"line_number":4,"context_line":"  \u003cmgmt_ip1\u003e172.17.44.17\u003c/mgmt_ip1\u003e"}],"source_content_type":"application/xml","patch_set":5,"id":"AAAAPH%2F%2FuTE%3D","line":1,"in_reply_to":"AAAAPH%2F%2F1%2Bo%3D","updated":"2013-05-24 13:05:23.000000000","message":"This will of course be documented. It is removed.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"}],"cinder/volume/drivers/hds/hds.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"iSCSI Cinder Volume driver for Hitachi Unified Storage (HUS) platform."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":26,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":27,"context_line":"from cinder.volume import driver"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaJQ%3D","line":24,"updated":"2013-05-10 15:45:08.000000000","message":"This block should be bellow the oslo.config block:\n\nTake a look here for more information:\n\nhttps://github.com/openstack/cinder/blob/master/HACKING.rst#imports","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"iSCSI Cinder Volume driver for Hitachi Unified Storage (HUS) platform."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":26,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":27,"context_line":"from cinder.volume import driver"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZis%3D","line":24,"in_reply_to":"AAAAOn%2F%2FaJQ%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":26,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":27,"context_line":"from cinder.volume import driver"},{"line_number":28,"context_line":"from oslo.config import cfg"},{"line_number":29,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaQM%3D","line":27,"updated":"2013-05-10 15:05:16.000000000","message":"Need a blank line between each group of library imports.\nImports should be grouped in the following order:\n1.standard library imports\n2.related third party imports\n3.local application/library specific imports","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cinder import exception"},{"line_number":25,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":26,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":27,"context_line":"from cinder.volume import driver"},{"line_number":28,"context_line":"from oslo.config import cfg"},{"line_number":29,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZio%3D","line":27,"in_reply_to":"AAAAOn%2F%2FaQM%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from oslo.config import cfg"},{"line_number":29,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from hus_backend import _Hus_Backend"},{"line_number":32,"context_line":"from hus_backend import _Simulated_Hus_Backend"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"HUS_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaJE%3D","line":31,"updated":"2013-05-10 15:45:08.000000000","message":"pls don\u0027t use relative imports:\n\nhttps://github.com/openstack/cinder/blob/master/HACKING.rst#imports","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from hus_backend import _Hus_Backend"},{"line_number":32,"context_line":"from hus_backend import _Simulated_Hus_Backend"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"HUS_OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027cinder_hds_config_file\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaIc%3D","line":32,"updated":"2013-05-10 15:45:08.000000000","message":"Pls, import just modules","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from hus_backend import _Hus_Backend"},{"line_number":32,"context_line":"from hus_backend import _Simulated_Hus_Backend"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"HUS_OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027cinder_hds_config_file\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZik%3D","line":32,"in_reply_to":"AAAAOn%2F%2FaIc%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from hus_backend import _Hus_Backend"},{"line_number":32,"context_line":"from hus_backend import _Simulated_Hus_Backend"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"HUS_OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027cinder_hds_config_file\u0027,"},{"line_number":36,"context_line":"               default\u003d\u0027/opt/hds/hus/cinder_hus_conf.xml\u0027,"},{"line_number":37,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaIY%3D","line":34,"updated":"2013-05-10 15:45:08.000000000","message":"You\u0027re not registering this options","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from hus_backend import _Hus_Backend"},{"line_number":32,"context_line":"from hus_backend import _Simulated_Hus_Backend"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"HUS_OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027cinder_hds_config_file\u0027,"},{"line_number":36,"context_line":"               default\u003d\u0027/opt/hds/hus/cinder_hus_conf.xml\u0027,"},{"line_number":37,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZlE%3D","line":34,"in_reply_to":"AAAAOn%2F%2FaIY%3D","updated":"2013-05-11 00:57:26.000000000","message":"Good catch. Thanks. :-)","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":46,"context_line":"    \"\"\" validate array allocation range \"\"\""},{"line_number":47,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":48,"context_line":"    if int(start) \u003c 0:"},{"line_number":49,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaPY%3D","line":46,"updated":"2013-05-10 15:05:16.000000000","message":"It would be better if docstring starts with a capital letter and ends with a period.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":46,"context_line":"    \"\"\" validate array allocation range \"\"\""},{"line_number":47,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":48,"context_line":"    if int(start) \u003c 0:"},{"line_number":49,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZlI%3D","line":46,"in_reply_to":"AAAAOn%2F%2FaJk%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":46,"context_line":"    \"\"\" validate array allocation range \"\"\""},{"line_number":47,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":48,"context_line":"    if int(start) \u003c 0:"},{"line_number":49,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaJk%3D","line":46,"in_reply_to":"AAAAOn%2F%2FaPY%3D","updated":"2013-05-10 15:45:08.000000000","message":"... and no spaces after / before \"\"\"","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":46,"context_line":"    \"\"\" validate array allocation range \"\"\""},{"line_number":47,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":48,"context_line":"    if int(start) \u003c 0:"},{"line_number":49,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZlM%3D","line":46,"in_reply_to":"AAAAOn%2F%2FaPY%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def _xml_read(root, element, check\u003dNone):"},{"line_number":64,"context_line":"    \"\"\" read an xml element \"\"\""},{"line_number":65,"context_line":"    try:"},{"line_number":66,"context_line":"        val \u003d None"},{"line_number":67,"context_line":"        val \u003d root.findtext(element).strip()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaPU%3D","line":64,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        LOG.info(_(\"%(element)s: %(val)s\") % locals())"},{"line_number":69,"context_line":"        if check and not val:"},{"line_number":70,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"},{"line_number":71,"context_line":"    except Exception:"},{"line_number":72,"context_line":"        if check:"},{"line_number":73,"context_line":"            LOG.error(_(\"Error reading parameter: %s\") % element)"},{"line_number":74,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaIs%3D","line":71,"updated":"2013-05-10 15:45:08.000000000","message":"Is there a more specific Exception that could be caught here?","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"},{"line_number":71,"context_line":"    except Exception:"},{"line_number":72,"context_line":"        if check:"},{"line_number":73,"context_line":"            LOG.error(_(\"Error reading parameter: %s\") % element)"},{"line_number":74,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            LOG.info(_(\"looking for parameter: %s\") % element)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaI4%3D","line":73,"updated":"2013-05-10 15:45:08.000000000","message":"pls, read comment in exception.py about this","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def _read_config(xml_config_file):"},{"line_number":81,"context_line":"    \"\"\" read hds driver specific xml config file \"\"\""},{"line_number":82,"context_line":"    try:"},{"line_number":83,"context_line":"        root \u003d ETree.parse(xml_config_file).getroot()"},{"line_number":84,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaP0%3D","line":81,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    \"\"\"HDS HUS volume driver.\"\"\""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _array_info_get(self):"},{"line_number":130,"context_line":"        \"\"\" get array parameters\"\"\""},{"line_number":131,"context_line":"        out \u003d self.be.get_version(self.config[\u0027hus_cmd\u0027],"},{"line_number":132,"context_line":"                                  self.config[\u0027mgmt_ip0\u0027],"},{"line_number":133,"context_line":"                                  self.config[\u0027mgmt_ip1\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaSs%3D","line":130,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        return(inf[1], \u0027hus_\u0027 + inf[1], inf[6])"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _get_iscsi_info(self):"},{"line_number":143,"context_line":"        \"\"\" validate array iscsi parameters\"\"\""},{"line_number":144,"context_line":"        out \u003d self.be.get_iscsi_info(self.config[\u0027hus_cmd\u0027],"},{"line_number":145,"context_line":"                                     self.config[\u0027mgmt_ip0\u0027],"},{"line_number":146,"context_line":"                                     self.config[\u0027mgmt_ip1\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaSc%3D","line":143,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        return conf"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _get_service(self, volume):"},{"line_number":164,"context_line":"        \"\"\" get the available service parameters for a given volume type \"\"\""},{"line_number":165,"context_line":"        label \u003d None"},{"line_number":166,"context_line":"        if volume[\u0027volume_type\u0027]:"},{"line_number":167,"context_line":"            label \u003d volume[\u0027volume_type\u0027][\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaSY%3D","line":164,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        return service"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def _get_stats(self):"},{"line_number":179,"context_line":"        \"\"\" get HDP stats from HUS \"\"\""},{"line_number":180,"context_line":"        total_cap \u003d 0"},{"line_number":181,"context_line":"        total_used \u003d 0"},{"line_number":182,"context_line":"        out \u003d self.be.get_hdp_info(self.config[\u0027hus_cmd\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaSM%3D","line":179,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        return hus_stat"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_hdp_list(self):"},{"line_number":206,"context_line":"        \"\"\" Get HDPs from HUS \"\"\""},{"line_number":207,"context_line":"        out \u003d self.be.get_hdp_info(self.config[\u0027hus_cmd\u0027],"},{"line_number":208,"context_line":"                                   self.config[\u0027mgmt_ip0\u0027],"},{"line_number":209,"context_line":"                                   self.config[\u0027mgmt_ip1\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaSA%3D","line":206,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        return hdp_list"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def _check_hdp_list(self):"},{"line_number":219,"context_line":"        \"\"\" Verify all HDPs specified in the configuration exist \"\"\""},{"line_number":220,"context_line":"        hdpl \u003d self._get_hdp_list()"},{"line_number":221,"context_line":"        lst \u003d self.config[\u0027hdp\u0027].keys()"},{"line_number":222,"context_line":"        lst.extend([self.config[\u0027snapshot_hdp\u0027], ])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaR0%3D","line":219,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                raise exception.ParameterNotFound(param\u003derr)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _id_to_vol(self, idd):"},{"line_number":230,"context_line":"        \"\"\" Given the volume id, retrieve the volume object from database \"\"\""},{"line_number":231,"context_line":"        vol \u003d self.db.volume_get(self.context, idd)"},{"line_number":232,"context_line":"        return vol"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRw%3D","line":230,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        return vol"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":235,"context_line":"        \"\"\" Initialize, read different config parameters \"\"\""},{"line_number":236,"context_line":"        super(HUSDriver, self).__init__(*args, **kwargs)"},{"line_number":237,"context_line":"        LOG.debug(_(\"hds_init\"))"},{"line_number":238,"context_line":"        self.driver_stats \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRs%3D","line":235,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        return"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def check_for_setup_error(self):"},{"line_number":268,"context_line":"        \"\"\" Returns an error if prerequisites aren\u0027t met \"\"\""},{"line_number":269,"context_line":"        LOG.debug(_(\"check_for_setup_error\"))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRo%3D","line":268,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        return"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def create_export(self, context, volume):"},{"line_number":281,"context_line":"        \"\"\" Create an export. Moved to initialize_connection \"\"\""},{"line_number":282,"context_line":"        return"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRk%3D","line":281,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":285,"context_line":"    def create_volume(self, volume):"},{"line_number":286,"context_line":"        \"\"\" Create a LU on HUS \"\"\""},{"line_number":287,"context_line":"        service \u003d self._get_service(volume)"},{"line_number":288,"context_line":"        (_ip, _ipp, _ctl, _port, hdp) \u003d service"},{"line_number":289,"context_line":"        out \u003d self.be.create_lu(self.config[\u0027hus_cmd\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRg%3D","line":286,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":302,"context_line":"    def delete_volume(self, volume):"},{"line_number":303,"context_line":"        \"\"\" Delete an LU on HUS \"\"\""},{"line_number":304,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":305,"context_line":"        if loc is None:"},{"line_number":306,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRc%3D","line":303,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                                 self.id, lun)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    def remove_export(self, context, volume):"},{"line_number":323,"context_line":"        \"\"\" Disconnect a volume from an attached instance \"\"\""},{"line_number":324,"context_line":"        return"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRY%3D","line":323,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":327,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":328,"context_line":"        \"\"\" Map the created volume to connector[\u0027initiator\u0027] \"\"\""},{"line_number":329,"context_line":"        service \u003d self._get_service(volume)"},{"line_number":330,"context_line":"        (ip, ipp, ctl, port, _hdp) \u003d service"},{"line_number":331,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaRU%3D","line":328,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"715e900e10e4e061fc281df4b22e14ae48d5aaab","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":31,"context_line":"from cinder.volume import driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"import hus_backend"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYLA%3D","line":33,"updated":"2013-05-13 03:13:34.000000000","message":"I\u0027d prefer you use \u0027from cinder.volume.drivers import hus_backend\u0027 instead.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"147866c2ae6906bf011dd14efcce53861be78c48","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":31,"context_line":"from cinder.volume import driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"import hus_backend"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXg0%3D","line":33,"in_reply_to":"AAAAOn%2F%2FYLA%3D","updated":"2013-05-13 13:51:15.000000000","message":"OK. Thanks.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"715e900e10e4e061fc281df4b22e14ae48d5aaab","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027simulated_back_end\u0027,"},{"line_number":42,"context_line":"                default\u003dFalse,"},{"line_number":43,"context_line":"                help\u003d\u0027simulation for self tests\u0027), ]"},{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYLM%3D","line":43,"updated":"2013-05-13 03:13:34.000000000","message":"Need a new line here.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"147866c2ae6906bf011dd14efcce53861be78c48","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027simulated_back_end\u0027,"},{"line_number":42,"context_line":"                default\u003dFalse,"},{"line_number":43,"context_line":"                help\u003d\u0027simulation for self tests\u0027), ]"},{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXhE%3D","line":43,"in_reply_to":"AAAAOn%2F%2FYLM%3D","updated":"2013-05-13 13:51:15.000000000","message":"Thanks. I will add a new line here. \nBut I thought pep8 would have caught it!","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b3f5a0f7ce718873e3b2c0e2a6aa4daa76a310b9","unresolved":false,"context_lines":[{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"HI_IQN \u003d \u0027iqn.1994-04.jp.co.hitachi:\u0027  # fixed string, for now."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def _do_lu_range_check(start, end, maxlun):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW7A%3D","line":47,"updated":"2013-05-13 18:29:02.000000000","message":"Hi Lakhinder, I still think this should be in cinder.conf.   You don\u0027t have to make the string dynamic, but this definition should stay in cinder.conf.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2bfbfb4c10cbd02c9d9ced36fe85477c1eb44a6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"HI_IQN \u003d \u0027iqn.1994-04.jp.co.hitachi:\u0027  # fixed string, for now."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def _do_lu_range_check(start, end, maxlun):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FV%2F0%3D","line":47,"in_reply_to":"AAAAOn%2F%2FW7A%3D","updated":"2013-05-16 03:53:29.000000000","message":"Xing, thanks. I wonder why would you want me to pollute cinder.conf with a vendor specific non-option (fixed) string? Maybe I don\u0027t understand the nuance here..\n\nI however agree with you when we make this configurable, it should definitely come from cinder.conf.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d1e2577a3d805065705645ac064b79be8ab57a28","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        LOG.info(_(\"%(element)s: %(val)s\") % locals())"},{"line_number":74,"context_line":"        if check and not val:"},{"line_number":75,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        if check:"},{"line_number":78,"context_line":"            LOG.error(_(\"Error reading parameter: %s\") % element)"},{"line_number":79,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY28%3D","line":76,"updated":"2013-05-11 17:10:58.000000000","message":"We typically discourage the use of generic Exceptions like this, as Flavio mentioned it would be preferred to capture specific exceptions from lxml if possible.  As it stands, you\u0027re not really giving users a fighting chance to figure out what might be wrong with their XML here.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5f848095c1d9365705ae72cc05e5cad0cf4f3eb5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        LOG.info(_(\"%(element)s: %(val)s\") % locals())"},{"line_number":74,"context_line":"        if check and not val:"},{"line_number":75,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        if check:"},{"line_number":78,"context_line":"            LOG.error(_(\"Error reading parameter: %s\") % element)"},{"line_number":79,"context_line":"            raise exception.ParameterNotFound(param\u003delement)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW1o%3D","line":76,"in_reply_to":"AAAAOn%2F%2FY28%3D","updated":"2013-05-13 19:17:11.000000000","message":"I shall see what I can do, and add more details. I am all for users having a fighting-with-xml chance :-)","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"6e2c527ce4d431a2b668d450a786b6fcba209266","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    if config[\u0027services\u0027].keys() is None:  # at least one service required!"},{"line_number":113,"context_line":"        LOG.error(_(\"No service found\"))"},{"line_number":114,"context_line":"        raise exception.ParameterNotFound(param\u003d\"No service found\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    config[\u0027snapshot_hdp\u0027] \u003d _xml_read(root, \u0027snapshot/hdp\u0027, \u0027check\u0027)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FX1s%3D","line":114,"updated":"2013-05-13 09:57:31.000000000","message":"Looks weird :/","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2bfbfb4c10cbd02c9d9ced36fe85477c1eb44a6","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    if config[\u0027services\u0027].keys() is None:  # at least one service required!"},{"line_number":113,"context_line":"        LOG.error(_(\"No service found\"))"},{"line_number":114,"context_line":"        raise exception.ParameterNotFound(param\u003d\"No service found\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    config[\u0027snapshot_hdp\u0027] \u003d _xml_read(root, \u0027snapshot/hdp\u0027, \u0027check\u0027)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FVGQ%3D","line":114,"in_reply_to":"AAAAOn%2F%2FX1s%3D","updated":"2013-05-16 03:53:29.000000000","message":"Sorry I did not understand what are you referring to.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"b3f5a0f7ce718873e3b2c0e2a6aa4daa76a310b9","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        self.configuration.append_config_values(HUS_OPTS)"},{"line_number":246,"context_line":"        if self.configuration.simulated_back_end:"},{"line_number":247,"context_line":"            LOG.info(_(\"Running simulated backend\"))"},{"line_number":248,"context_line":"            self.be \u003d hus_backend._Simulated_Hus_Backend()"},{"line_number":249,"context_line":"        else:"},{"line_number":250,"context_line":"            self.be \u003d hus_backend._Hus_Backend()"},{"line_number":251,"context_line":"        self.config \u003d _read_config(self.configuration.cinder_hds_config_file)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW7M%3D","line":248,"updated":"2013-05-13 18:29:02.000000000","message":"This should be handled within the test program.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5f848095c1d9365705ae72cc05e5cad0cf4f3eb5","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        self.configuration.append_config_values(HUS_OPTS)"},{"line_number":246,"context_line":"        if self.configuration.simulated_back_end:"},{"line_number":247,"context_line":"            LOG.info(_(\"Running simulated backend\"))"},{"line_number":248,"context_line":"            self.be \u003d hus_backend._Simulated_Hus_Backend()"},{"line_number":249,"context_line":"        else:"},{"line_number":250,"context_line":"            self.be \u003d hus_backend._Hus_Backend()"},{"line_number":251,"context_line":"        self.config \u003d _read_config(self.configuration.cinder_hds_config_file)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW1g%3D","line":248,"in_reply_to":"AAAAOn%2F%2FW7M%3D","updated":"2013-05-13 19:17:11.000000000","message":"This Cinder driver loads an actual real array handler, or a simulated array handler. I think this is as straightforward a call it can get. \n\nAnd I would like to keep it this way please, for it keeps my test logic and the real code very symmetrical, and I don\u0027t have to jump through the hoops to simulate the array.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c7533a3f6f3c34f560bb1638de2a3ff85a68bd6f","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        LOG.debug(_(\"check_for_setup_error\"))"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def do_setup(self, context):"},{"line_number":277,"context_line":"        \"\"\"Setup and verify HDS HUS storage connection. But moved it to"},{"line_number":278,"context_line":"            __init__ as (setup/errors) could became an infinite loop.\"\"\""},{"line_number":279,"context_line":"        LOG.debug(_(\"do_setup\"))"},{"line_number":280,"context_line":"        self.context \u003d context"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F%2BM%3D","line":277,"updated":"2013-05-15 06:19:50.000000000","message":"should be a oneline or multiline doc string like shown in https://github.com/openstack/cinder/blob/master/HACKING.rst#docstrings","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c7533a3f6f3c34f560bb1638de2a3ff85a68bd6f","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":318,"context_line":"        name \u003d self.hus_name"},{"line_number":319,"context_line":"        LOG.debug(_(\"delete lun %(lun)s on %(name)s\") % locals())"},{"line_number":320,"context_line":"        _out \u003d self.be.delete_lu(self.config[\u0027hus_cmd\u0027],"},{"line_number":321,"context_line":"                                 self.config[\u0027mgmt_ip0\u0027],"},{"line_number":322,"context_line":"                                 self.config[\u0027mgmt_ip1\u0027],"},{"line_number":323,"context_line":"                                 self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F%2BI%3D","line":320,"updated":"2013-05-15 06:19:50.000000000","message":"_out never used.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2bfbfb4c10cbd02c9d9ced36fe85477c1eb44a6","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":318,"context_line":"        name \u003d self.hus_name"},{"line_number":319,"context_line":"        LOG.debug(_(\"delete lun %(lun)s on %(name)s\") % locals())"},{"line_number":320,"context_line":"        _out \u003d self.be.delete_lu(self.config[\u0027hus_cmd\u0027],"},{"line_number":321,"context_line":"                                 self.config[\u0027mgmt_ip0\u0027],"},{"line_number":322,"context_line":"                                 self.config[\u0027mgmt_ip1\u0027],"},{"line_number":323,"context_line":"                                 self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F9Zk%3D","line":320,"in_reply_to":"AAAAO3%2F%2F%2F%2BI%3D","updated":"2013-05-16 03:53:29.000000000","message":"This passes pylint. Variables with underscore indicate they are not used. Thanks.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c7533a3f6f3c34f560bb1638de2a3ff85a68bd6f","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        iqn \u003d HI_IQN + loc"},{"line_number":339,"context_line":"        tgt_alias \u003d \u0027cinder.\u0027 + loc"},{"line_number":340,"context_line":"        init_alias \u003d connector[\u0027host\u0027][:(31 - len(loc))] + \u0027.\u0027 + loc"},{"line_number":341,"context_line":"        _out \u003d self.be.add_iscsi_conn(self.config[\u0027hus_cmd\u0027],"},{"line_number":342,"context_line":"                                      self.config[\u0027mgmt_ip0\u0027],"},{"line_number":343,"context_line":"                                      self.config[\u0027mgmt_ip1\u0027],"},{"line_number":344,"context_line":"                                      self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F7s%3D","line":341,"updated":"2013-05-15 06:19:50.000000000","message":"_out never used.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c7533a3f6f3c34f560bb1638de2a3ff85a68bd6f","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        iqn \u003d HI_IQN + loc"},{"line_number":366,"context_line":"        service \u003d self._get_service(volume)"},{"line_number":367,"context_line":"        (_ip, _ipp, ctl, port, _hdp) \u003d service"},{"line_number":368,"context_line":"        _out \u003d self.be.del_iscsi_conn(self.config[\u0027hus_cmd\u0027],"},{"line_number":369,"context_line":"                                      self.config[\u0027mgmt_ip0\u0027],"},{"line_number":370,"context_line":"                                      self.config[\u0027mgmt_ip1\u0027],"},{"line_number":371,"context_line":"                                      self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAO3%2F%2F%2F7o%3D","line":368,"updated":"2013-05-15 06:19:50.000000000","message":"_out never used.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder import flags"},{"line_number":27,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":"from cinder.volume import driver"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Jg%3D","line":26,"updated":"2013-05-16 16:49:47.000000000","message":"Use self.configuration instead of flags","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from xml.etree import ElementTree as ETree"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder import flags"},{"line_number":27,"context_line":"from cinder.openstack.common import lockutils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":"from cinder.volume import driver"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F7zQ%3D","line":26,"in_reply_to":"AAAAO3%2F%2F8Jg%3D","updated":"2013-05-16 20:40:51.000000000","message":"Pardon me, I am looking at xiv.py. What is the difference here?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":40,"context_line":"    cfg.BoolOpt(\u0027hds_simulated_back_end\u0027,"},{"line_number":41,"context_line":"                default\u003dFalse,"},{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8MU%3D","line":42,"updated":"2013-05-16 16:49:47.000000000","message":"If you don\u0027t want users changing something, don\u0027t expose it.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":40,"context_line":"    cfg.BoolOpt(\u0027hds_simulated_back_end\u0027,"},{"line_number":41,"context_line":"                default\u003dFalse,"},{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F7zI%3D","line":42,"in_reply_to":"AAAAO3%2F%2F8MU%3D","updated":"2013-05-16 20:40:51.000000000","message":"You have a point here. Let me see what I can do.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"HI_IQN \u003d \u0027iqn.1994-04.jp.co.hitachi:\u0027  # fixed string, for now."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8JY%3D","line":45,"updated":"2013-05-16 16:49:47.000000000","message":"Use self.configuration instead of flags","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":45,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"HI_IQN \u003d \u0027iqn.1994-04.jp.co.hitachi:\u0027  # fixed string, for now."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F7y8%3D","line":45,"in_reply_to":"AAAAO3%2F%2F8JY%3D","updated":"2013-05-16 20:40:51.000000000","message":"(as comments from above). I am looking at xiv.py, and am not sure what is the difference here? Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4a661ffd321663fdedf9f86b99d5b4b3ef7b3b3e","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def do_setup(self, context):"},{"line_number":272,"context_line":"        \"\"\"Setup and verify HDS HUS storage connection. But moved it to"},{"line_number":273,"context_line":"            __init__ as (setup/errors) could became an infinite loop.\"\"\""},{"line_number":274,"context_line":"        LOG.debug(_(\"do_setup\"))"},{"line_number":275,"context_line":"        self.context \u003d context"},{"line_number":276,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8D0%3D","line":273,"updated":"2013-05-16 17:46:03.000000000","message":"You missed this from patch set 2. Should be a oneline or multiline doc string like shown in https://github.com/openstack/cinder/blob/master/HACKING.rst#docstrings","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def do_setup(self, context):"},{"line_number":272,"context_line":"        \"\"\"Setup and verify HDS HUS storage connection. But moved it to"},{"line_number":273,"context_line":"            __init__ as (setup/errors) could became an infinite loop.\"\"\""},{"line_number":274,"context_line":"        LOG.debug(_(\"do_setup\"))"},{"line_number":275,"context_line":"        self.context \u003d context"},{"line_number":276,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F7ys%3D","line":273,"in_reply_to":"AAAAO3%2F%2F8D0%3D","updated":"2013-05-16 20:40:51.000000000","message":"Thanks for pointing this out. I shall fix this.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4a661ffd321663fdedf9f86b99d5b4b3ef7b3b3e","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":313,"context_line":"        name \u003d self.hus_name"},{"line_number":314,"context_line":"        LOG.debug(_(\"delete lun %(lun)s on %(name)s\") % locals())"},{"line_number":315,"context_line":"        _out \u003d self.bend.delete_lu(self.config[\u0027hus_cmd\u0027],"},{"line_number":316,"context_line":"                                   self.config[\u0027mgmt_ip0\u0027],"},{"line_number":317,"context_line":"                                   self.config[\u0027mgmt_ip1\u0027],"},{"line_number":318,"context_line":"                                   self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Do%3D","line":315,"updated":"2013-05-16 17:46:03.000000000","message":"I don\u0027t care about pylint in this case. There\u0027s no point to setting it.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":313,"context_line":"        name \u003d self.hus_name"},{"line_number":314,"context_line":"        LOG.debug(_(\"delete lun %(lun)s on %(name)s\") % locals())"},{"line_number":315,"context_line":"        _out \u003d self.bend.delete_lu(self.config[\u0027hus_cmd\u0027],"},{"line_number":316,"context_line":"                                   self.config[\u0027mgmt_ip0\u0027],"},{"line_number":317,"context_line":"                                   self.config[\u0027mgmt_ip1\u0027],"},{"line_number":318,"context_line":"                                   self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F74c%3D","line":315,"in_reply_to":"AAAAO3%2F%2F8Do%3D","updated":"2013-05-16 20:40:51.000000000","message":"OK. I understand your context. I shall remove it. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4a661ffd321663fdedf9f86b99d5b4b3ef7b3b3e","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        iqn \u003d HI_IQN + loc"},{"line_number":334,"context_line":"        tgt_alias \u003d \u0027cinder.\u0027 + loc"},{"line_number":335,"context_line":"        init_alias \u003d connector[\u0027host\u0027][:(31 - len(loc))] + \u0027.\u0027 + loc"},{"line_number":336,"context_line":"        _out \u003d self.bend.add_iscsi_conn(self.config[\u0027hus_cmd\u0027],"},{"line_number":337,"context_line":"                                        self.config[\u0027mgmt_ip0\u0027],"},{"line_number":338,"context_line":"                                        self.config[\u0027mgmt_ip1\u0027],"},{"line_number":339,"context_line":"                                        self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8Dc%3D","line":336,"updated":"2013-05-16 17:46:03.000000000","message":"_out is not used.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        iqn \u003d HI_IQN + loc"},{"line_number":334,"context_line":"        tgt_alias \u003d \u0027cinder.\u0027 + loc"},{"line_number":335,"context_line":"        init_alias \u003d connector[\u0027host\u0027][:(31 - len(loc))] + \u0027.\u0027 + loc"},{"line_number":336,"context_line":"        _out \u003d self.bend.add_iscsi_conn(self.config[\u0027hus_cmd\u0027],"},{"line_number":337,"context_line":"                                        self.config[\u0027mgmt_ip0\u0027],"},{"line_number":338,"context_line":"                                        self.config[\u0027mgmt_ip1\u0027],"},{"line_number":339,"context_line":"                                        self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F74U%3D","line":336,"in_reply_to":"AAAAO3%2F%2F8Dc%3D","updated":"2013-05-16 20:40:51.000000000","message":"Shall remove it. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4a661ffd321663fdedf9f86b99d5b4b3ef7b3b3e","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        iqn \u003d HI_IQN + loc"},{"line_number":361,"context_line":"        service \u003d self._get_service(volume)"},{"line_number":362,"context_line":"        (_ip, _ipp, ctl, port, _hdp) \u003d service"},{"line_number":363,"context_line":"        _out \u003d self.bend.del_iscsi_conn(self.config[\u0027hus_cmd\u0027],"},{"line_number":364,"context_line":"                                        self.config[\u0027mgmt_ip0\u0027],"},{"line_number":365,"context_line":"                                        self.config[\u0027mgmt_ip1\u0027],"},{"line_number":366,"context_line":"                                        self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8DQ%3D","line":363,"updated":"2013-05-16 17:46:03.000000000","message":"_out not used.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        iqn \u003d HI_IQN + loc"},{"line_number":361,"context_line":"        service \u003d self._get_service(volume)"},{"line_number":362,"context_line":"        (_ip, _ipp, ctl, port, _hdp) \u003d service"},{"line_number":363,"context_line":"        _out \u003d self.bend.del_iscsi_conn(self.config[\u0027hus_cmd\u0027],"},{"line_number":364,"context_line":"                                        self.config[\u0027mgmt_ip0\u0027],"},{"line_number":365,"context_line":"                                        self.config[\u0027mgmt_ip1\u0027],"},{"line_number":366,"context_line":"                                        self.config[\u0027username\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F7yo%3D","line":363,"in_reply_to":"AAAAO3%2F%2F8DQ%3D","updated":"2013-05-16 20:40:51.000000000","message":"(as above)","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27374147138e340b7d20360679b2b3922e442d09","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027hds_cinder_config_file\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027/opt/hds/hus/cinder_hus_conf.xml\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":40,"context_line":"    cfg.BoolOpt(\u0027hds_simulated_back_end\u0027,"},{"line_number":41,"context_line":"                default\u003dFalse,"},{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2F1%2BQ%3D","line":40,"updated":"2013-05-21 21:55:53.000000000","message":"Rather than expose this, can we just setup a mock or stub for bend which is set in the test?  I can help you with this if you\u0027re not familiar with what I\u0027m suggesting.\n\nThis would mean you could/should remove the import of the simulatedHusBackend as well.  Basicly just mock out the HusBackend with SimulatedHusBackend in your test file.\n\nThere\u0027s nothing really *wrong* with the way you\u0027ve done it but I\u0027d like to keep test and driver code independent if possible.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2a6fc091b0492440a1ef0881486d1136fe38085","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027hds_cinder_config_file\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027/opt/hds/hus/cinder_hus_conf.xml\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":40,"context_line":"    cfg.BoolOpt(\u0027hds_simulated_back_end\u0027,"},{"line_number":41,"context_line":"                default\u003dFalse,"},{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FuWQ%3D","line":40,"in_reply_to":"AAAAPH%2F%2F1%2BQ%3D","updated":"2013-05-24 13:05:23.000000000","message":"This is done in Patch 6.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"bad8031a2292771219ea1a16c77909eba48162ce","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        \"\"\"Create an export. Moved to initialize_connection.\"\"\""},{"line_number":285,"context_line":"        return"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":288,"context_line":"    def create_volume(self, volume):"},{"line_number":289,"context_line":"        \"\"\"Create a LU on HUS.\"\"\""},{"line_number":290,"context_line":"        service \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2Fx84%3D","line":287,"updated":"2013-05-23 07:13:10.000000000","message":"Can you have a look at this and incorporate similarly here?\nhttps://review.openstack.org/#/c/29065/\n\n(At 7 more places in this file)","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"62fa91b58aa72095843cfcfe53350b99ed8f07d2","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        \"\"\"Create an export. Moved to initialize_connection.\"\"\""},{"line_number":285,"context_line":"        return"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":288,"context_line":"    def create_volume(self, volume):"},{"line_number":289,"context_line":"        \"\"\"Create a LU on HUS.\"\"\""},{"line_number":290,"context_line":"        service \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FwnA%3D","line":287,"in_reply_to":"AAAAPH%2F%2Fx84%3D","updated":"2013-05-23 17:45:53.000000000","message":"Sure. Thanks.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"0cc591b14044870ba364466b08b7c465cf449bf5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.StrOpt(\u0027hds_cinder_config_file\u0027,"},{"line_number":38,"context_line":"               default\u003d\u0027/opt/hds/hus/cinder_hus_conf.xml\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027),"},{"line_number":40,"context_line":"    cfg.BoolOpt(\u0027hds_simulated_back_end\u0027,"},{"line_number":41,"context_line":"                default\u003dFalse,"},{"line_number":42,"context_line":"                help\u003d\u0027simulation mode for self tests. dont change this\u0027), ]"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2FtmA%3D","line":40,"updated":"2013-05-24 18:03:59.000000000","message":"Need to remove this BoolOpt. Missed removing it.","commit_id":"01604489a2769b62262f0148276bd9eb48500ca5"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027), ]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":42,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"HI_IQN \u003d \u0027iqn.1994-04.jp.co.hitachi:\u0027  # fixed string, for now."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpRM%3D","line":42,"updated":"2013-05-28 18:12:12.000000000","message":"We\u0027re moving away from using FLAGS.register_opts  (if I am correct). Can we remove it?","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"ff2f7edae1c16813cc1f8869c8a56c322d9bc3a9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               help\u003d\u0027configuration file for HDS cinder plugin for HUS\u0027), ]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":42,"context_line":"FLAGS.register_opts(HUS_OPTS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"HI_IQN \u003d \u0027iqn.1994-04.jp.co.hitachi:\u0027  # fixed string, for now."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FoW8%3D","line":42,"in_reply_to":"AAAAPH%2F%2FpRM%3D","updated":"2013-05-29 04:15:58.000000000","message":"Don\u0027t know. But perhaps as a code refactor in Havana-2, I can attempt too do it. I need to look at this carefully. Thanks.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def factory_bend():"},{"line_number":52,"context_line":"    \"\"\"factory overridden in self-tests\"\"\""},{"line_number":53,"context_line":"    return HusBackend()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpQ0%3D","line":52,"updated":"2013-05-28 18:12:12.000000000","message":"Period at end of docstring","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"ff2f7edae1c16813cc1f8869c8a56c322d9bc3a9","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def factory_bend():"},{"line_number":52,"context_line":"    \"\"\"factory overridden in self-tests\"\"\""},{"line_number":53,"context_line":"    return HusBackend()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FoW4%3D","line":52,"in_reply_to":"AAAAPH%2F%2FpQ0%3D","updated":"2013-05-29 04:15:58.000000000","message":"Fixed. Thanks.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":57,"context_line":"    \"\"\"Validate array allocation range.\"\"\""},{"line_number":58,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":59,"context_line":"    if int(start) \u003c 0:"},{"line_number":60,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"},{"line_number":61,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpQk%3D","line":58,"updated":"2013-05-28 18:12:12.000000000","message":"Nobody likes locals, so would be better if you remove it if you want to save yourself from minus reviews from others :)","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"ff2f7edae1c16813cc1f8869c8a56c322d9bc3a9","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":57,"context_line":"    \"\"\"Validate array allocation range.\"\"\""},{"line_number":58,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":59,"context_line":"    if int(start) \u003c 0:"},{"line_number":60,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"},{"line_number":61,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FoYk%3D","line":58,"in_reply_to":"AAAAPH%2F%2FpQk%3D","updated":"2013-05-29 04:15:58.000000000","message":"Per Thingee, I shall do this as a separate  check-in soon. Thanks for pointing this out.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    \"\"\"Read an xml element.\"\"\""},{"line_number":76,"context_line":"    try:"},{"line_number":77,"context_line":"        val \u003d root.findtext(element)"},{"line_number":78,"context_line":"        LOG.info(_(\"%(element)s: %(val)s\") % locals())"},{"line_number":79,"context_line":"        if val:"},{"line_number":80,"context_line":"            return val.strip()"},{"line_number":81,"context_line":"        if check:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpOw%3D","line":78,"updated":"2013-05-28 18:12:12.000000000","message":"locals","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"e7b206e53f669ded8d52cbb86bd53e1997240da8","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        \"\"\"Create an export. Moved to initialize_connection.\"\"\""},{"line_number":278,"context_line":"        return"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":281,"context_line":"    def create_volume(self, volume):"},{"line_number":282,"context_line":"        \"\"\"Create a LU on HUS.\"\"\""},{"line_number":283,"context_line":"        service \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FsCg%3D","line":280,"updated":"2013-05-27 01:46:00.000000000","message":"There\u0027s a simplified \u0027synchronzied\u0027 in utils.py.  It was there to save the effort of adding prefix everything using synchronized in lockutils.  If there\u0027s no specific reason to use your own prefix \u0027hds-cinder\u0027 rather than common prefix \u0027cinder\u0027, you may want to try that.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"ff2f7edae1c16813cc1f8869c8a56c322d9bc3a9","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        \"\"\"Create an export. Moved to initialize_connection.\"\"\""},{"line_number":278,"context_line":"        return"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":281,"context_line":"    def create_volume(self, volume):"},{"line_number":282,"context_line":"        \"\"\"Create a LU on HUS.\"\"\""},{"line_number":283,"context_line":"        service \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FoYc%3D","line":280,"in_reply_to":"AAAAPH%2F%2Frhs%3D","updated":"2013-05-29 04:15:58.000000000","message":"Done. See V9.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"bfa9708c9da776e3ce10917f5a97fcd82e06f0fd","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        \"\"\"Create an export. Moved to initialize_connection.\"\"\""},{"line_number":278,"context_line":"        return"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"},{"line_number":281,"context_line":"    def create_volume(self, volume):"},{"line_number":282,"context_line":"        \"\"\"Create a LU on HUS.\"\"\""},{"line_number":283,"context_line":"        service \u003d self._get_service(volume)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2Frhs%3D","line":280,"in_reply_to":"AAAAPH%2F%2FsCg%3D","updated":"2013-05-27 13:37:38.000000000","message":"Thanks to you and Rushi for the suggestion.\n\nYes, this change (and other enhancements) will be incorporated as a patch in Havana time frame.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        lun \u003d self.arid + \u0027.\u0027 + out.split()[1]"},{"line_number":384,"context_line":"        sz \u003d int(out.split()[5])"},{"line_number":385,"context_line":"        LOG.debug(_(\"LUN %(lun)s of size %(sz)s MB is created from snapshot.\")"},{"line_number":386,"context_line":"                  % locals())"},{"line_number":387,"context_line":"        return {\u0027provider_location\u0027: lun}"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpOE%3D","line":386,"updated":"2013-05-28 18:12:12.000000000","message":"locals","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                   \u0027%s\u0027 % (size))"},{"line_number":404,"context_line":"        lun \u003d self.arid + \u0027.\u0027 + out.split()[1]"},{"line_number":405,"context_line":"        size \u003d int(out.split()[5])"},{"line_number":406,"context_line":"        LOG.debug(_(\"LUN %(lun)s of size %(size)s MB is created.\") % locals())"},{"line_number":407,"context_line":"        return {\u0027provider_location\u0027: lun}"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    @lockutils.synchronized(\u0027hds_hus\u0027, \u0027hds_cinder-\u0027, True)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpOA%3D","line":406,"updated":"2013-05-28 18:12:12.000000000","message":"locals","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":416,"context_line":"        myid \u003d self.arid"},{"line_number":417,"context_line":"        if arid !\u003d myid:"},{"line_number":418,"context_line":"            LOG.error(_(\u0027Array mismatch %(myid)s vs %(arid)s\u0027) % locals())"},{"line_number":419,"context_line":"            msg \u003d \u0027Array id mismatch in delete snapshot\u0027"},{"line_number":420,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":421,"context_line":"        _out \u003d self.bend.delete_lu(self.config[\u0027hus_cmd\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpN8%3D","line":418,"updated":"2013-05-28 18:12:12.000000000","message":"locals","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"909c21a16d6846867e18a22b6eab4af522148231","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder import flags"},{"line_number":27,"context_line":"from cinder import utils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":"from cinder.volume import driver"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from cinder.volume.drivers.hds.hus_backend import HusBackend"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FngU%3D","line":28,"updated":"2013-05-29 08:14:06.000000000","message":"import order","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"3acef8b1ee079763fd3a82ff4291b47c96202a87","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder import flags"},{"line_number":27,"context_line":"from cinder import utils"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":"from cinder.volume import driver"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from cinder.volume.drivers.hds.hus_backend import HusBackend"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FmxQ%3D","line":28,"in_reply_to":"AAAAPH%2F%2FngU%3D","updated":"2013-05-29 13:57:31.000000000","message":"Fixed. But I am confused. I have the latest source tree, and pep8 passes. And obviously Jenkins is running some other mix of tools.","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":57,"context_line":"    \"\"\"Validate array allocation range.\"\"\""},{"line_number":58,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":59,"context_line":"    if int(start) \u003c 0:"},{"line_number":60,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"},{"line_number":61,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm94%3D","line":58,"updated":"2013-05-29 13:19:14.000000000","message":"Please do not use locals()","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"3acef8b1ee079763fd3a82ff4291b47c96202a87","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _do_lu_range_check(start, end, maxlun):"},{"line_number":57,"context_line":"    \"\"\"Validate array allocation range.\"\"\""},{"line_number":58,"context_line":"    LOG.debug(_(\"Range: start LU: %(start)s, end LU: %(end)s\") % locals())"},{"line_number":59,"context_line":"    if int(start) \u003c 0:"},{"line_number":60,"context_line":"        msg \u003d \u0027start LU limit too low: \u0027 + start"},{"line_number":61,"context_line":"        raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FmxE%3D","line":58,"in_reply_to":"AAAAPH%2F%2Fm94%3D","updated":"2013-05-29 13:57:31.000000000","message":"Had discussed this with Mike Perez. But with popular demand that it is, it is fixed :-)","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    \"\"\"Read an xml element.\"\"\""},{"line_number":76,"context_line":"    try:"},{"line_number":77,"context_line":"        val \u003d root.findtext(element)"},{"line_number":78,"context_line":"        LOG.info(_(\"%(element)s: %(val)s\") % locals())"},{"line_number":79,"context_line":"        if val:"},{"line_number":80,"context_line":"            return val.strip()"},{"line_number":81,"context_line":"        if check:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm9I%3D","line":78,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                                  \u0027%s\u0027 % (int(volume[\u0027size\u0027]) * 1024))"},{"line_number":292,"context_line":"        lun \u003d self.arid + \u0027.\u0027 + out.split()[1]"},{"line_number":293,"context_line":"        sz \u003d int(out.split()[5])"},{"line_number":294,"context_line":"        LOG.debug(_(\"LUN %(lun)s of size %(sz)s MB is created.\") % locals())"},{"line_number":295,"context_line":"        return {\u0027provider_location\u0027: lun}"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @utils.synchronized(\u0027hds_hus\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm9A%3D","line":294,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":304,"context_line":"        myid \u003d self.arid"},{"line_number":305,"context_line":"        if arid !\u003d myid:"},{"line_number":306,"context_line":"            LOG.error(_(\"Array Mismatch %(myid)s vs %(arid)s\") % locals())"},{"line_number":307,"context_line":"            msg \u003d \u0027Array id mismatch in volume delete\u0027"},{"line_number":308,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":309,"context_line":"        name \u003d self.hus_name"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm88%3D","line":306,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            msg \u003d \u0027Array id mismatch in volume delete\u0027"},{"line_number":308,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":309,"context_line":"        name \u003d self.hus_name"},{"line_number":310,"context_line":"        LOG.debug(_(\"delete lun %(lun)s on %(name)s\") % locals())"},{"line_number":311,"context_line":"        _out \u003d self.bend.delete_lu(self.config[\u0027hus_cmd\u0027],"},{"line_number":312,"context_line":"                                   self.config[\u0027mgmt_ip0\u0027],"},{"line_number":313,"context_line":"                                   self.config[\u0027mgmt_ip1\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm84%3D","line":310,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        lun \u003d self.arid + \u0027.\u0027 + out.split()[1]"},{"line_number":384,"context_line":"        sz \u003d int(out.split()[5])"},{"line_number":385,"context_line":"        LOG.debug(_(\"LUN %(lun)s of size %(sz)s MB is created from snapshot.\")"},{"line_number":386,"context_line":"                  % locals())"},{"line_number":387,"context_line":"        return {\u0027provider_location\u0027: lun}"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    @utils.synchronized(\u0027hds_hus\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm80%3D","line":386,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                                   \u0027%s\u0027 % (size))"},{"line_number":404,"context_line":"        lun \u003d self.arid + \u0027.\u0027 + out.split()[1]"},{"line_number":405,"context_line":"        size \u003d int(out.split()[5])"},{"line_number":406,"context_line":"        LOG.debug(_(\"LUN %(lun)s of size %(size)s MB is created.\") % locals())"},{"line_number":407,"context_line":"        return {\u0027provider_location\u0027: lun}"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    @utils.synchronized(\u0027hds_hus\u0027, external\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm8w%3D","line":406,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"943ce23e64edd9ce78c386e81e1dd467e7d4c441","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":416,"context_line":"        myid \u003d self.arid"},{"line_number":417,"context_line":"        if arid !\u003d myid:"},{"line_number":418,"context_line":"            LOG.error(_(\u0027Array mismatch %(myid)s vs %(arid)s\u0027) % locals())"},{"line_number":419,"context_line":"            msg \u003d \u0027Array id mismatch in delete snapshot\u0027"},{"line_number":420,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":421,"context_line":"        _out \u003d self.bend.delete_lu(self.config[\u0027hus_cmd\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fm8s%3D","line":418,"updated":"2013-05-29 13:19:14.000000000","message":"locals","commit_id":"2dc997bf730403494434c0e453731a3188c7c681"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"88cb5ac344b739bfe40326e1a8f46227a16d253f","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    def delete_volume(self, volume):"},{"line_number":309,"context_line":"        \"\"\"Delete an LU on HUS.\"\"\""},{"line_number":310,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":311,"context_line":"        if loc is None:"},{"line_number":312,"context_line":"            return"},{"line_number":313,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":314,"context_line":"        myid \u003d self.arid"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2FiCU%3D","line":311,"updated":"2013-05-31 04:45:33.000000000","message":"I think you misunderstood, the case where I mentioned we \"skip\" and just return is when the HDS backend can\u0027t find the volume.","commit_id":"5f9048697a5d7240e0bb653571d80d9d72452c82"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"6a7ad909d0ab4fdfe35d0ed9e491971b690e3672","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    def delete_volume(self, volume):"},{"line_number":309,"context_line":"        \"\"\"Delete an LU on HUS.\"\"\""},{"line_number":310,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":311,"context_line":"        if loc is None:"},{"line_number":312,"context_line":"            return"},{"line_number":313,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":314,"context_line":"        myid \u003d self.arid"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2FfOY%3D","line":311,"in_reply_to":"AAAAPH%2F%2FiCU%3D","updated":"2013-06-01 03:07:26.000000000","message":"Sorry, I missed replying to this one, when Backend does not find the volume it does return. That is taken care of in self.bend.delete_lu(), line 325. In hus_cmd.exe.\n\nThis step just avoids getting an exception just in case provider location is totally bogus (i.e. empty).","commit_id":"5f9048697a5d7240e0bb653571d80d9d72452c82"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"88cb5ac344b739bfe40326e1a8f46227a16d253f","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":428,"context_line":"        \"\"\"Delete a snapshot.\"\"\""},{"line_number":429,"context_line":"        loc \u003d snapshot[\u0027provider_location\u0027]"},{"line_number":430,"context_line":"        if loc is None:"},{"line_number":431,"context_line":"            return"},{"line_number":432,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":433,"context_line":"        myid \u003d self.arid"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2FiCQ%3D","line":430,"updated":"2013-05-31 04:45:33.000000000","message":"same comment as above in delete volume.","commit_id":"5f9048697a5d7240e0bb653571d80d9d72452c82"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"6a7ad909d0ab4fdfe35d0ed9e491971b690e3672","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":428,"context_line":"        \"\"\"Delete a snapshot.\"\"\""},{"line_number":429,"context_line":"        loc \u003d snapshot[\u0027provider_location\u0027]"},{"line_number":430,"context_line":"        if loc is None:"},{"line_number":431,"context_line":"            return"},{"line_number":432,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":433,"context_line":"        myid \u003d self.arid"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPH%2F%2FfOU%3D","line":430,"in_reply_to":"AAAAPH%2F%2FiCQ%3D","updated":"2013-06-01 03:07:26.000000000","message":"(as above).","commit_id":"5f9048697a5d7240e0bb653571d80d9d72452c82"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"93f327a7f98815d57b26ab9d3c8167584c93a9ba","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    def delete_volume(self, volume):"},{"line_number":309,"context_line":"        \"\"\"Delete an LU on HUS.\"\"\""},{"line_number":310,"context_line":"        loc \u003d volume[\u0027provider_location\u0027]"},{"line_number":311,"context_line":"        if loc is None:"},{"line_number":312,"context_line":"            return"},{"line_number":313,"context_line":"        (arid, lun) \u003d loc.split(\u0027.\u0027)"},{"line_number":314,"context_line":"        myid \u003d self.arid"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPH%2F%2FfTE%3D","line":311,"updated":"2013-06-01 01:58:50.000000000","message":"Perhaps you missed my comments on this, between the last patch set, the review and on IRC?\n\nYou need to be checking if the volume/snapshot does not exist on the HUS backend, not that the provider location is None.","commit_id":"d86c974b91542dd3fd7de3ea63b9a49c4259e5e9"}],"cinder/volume/drivers/hds/hus_backend.py":[{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class _Hus_Backend:"},{"line_number":31,"context_line":"    \"\"\"Back end. Talks to HUS\"\"\""},{"line_number":32,"context_line":"    def get_version(self, cmd, ip0, ip1, user, pw):"},{"line_number":33,"context_line":"        out, err \u003d utils.execute(cmd,"},{"line_number":34,"context_line":"                                 \u0027--ip0\u0027, ip0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaOw%3D","line":31,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class _Hus_Backend:"},{"line_number":31,"context_line":"    \"\"\"Back end. Talks to HUS\"\"\""},{"line_number":32,"context_line":"    def get_version(self, cmd, ip0, ip1, user, pw):"},{"line_number":33,"context_line":"        out, err \u003d utils.execute(cmd,"},{"line_number":34,"context_line":"                                 \u0027--ip0\u0027, ip0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZn8%3D","line":31,"in_reply_to":"AAAAOn%2F%2FaOw%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class _Simulated_Hus_Backend(_Hus_Backend):"},{"line_number":156,"context_line":"    \"\"\"Simulation Back end. Talks to HUS\"\"\""},{"line_number":157,"context_line":"    def __init__(self):"},{"line_number":158,"context_line":"        self.start_lun \u003d 0"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaOs%3D","line":156,"updated":"2013-05-10 15:05:16.000000000","message":"need a period","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class _Simulated_Hus_Backend(_Hus_Backend):"},{"line_number":156,"context_line":"    \"\"\"Simulation Back end. Talks to HUS\"\"\""},{"line_number":157,"context_line":"    def __init__(self):"},{"line_number":158,"context_line":"        self.start_lun \u003d 0"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZn4%3D","line":156,"in_reply_to":"AAAAOn%2F%2FaOs%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return out"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def delete_lu(self, cmd, ip0, ip1, user, pw, id, lun):"},{"line_number":187,"context_line":"        out \u003d \"\"\"LUN: %s is successfully deleted\"\"\" % (lun)"},{"line_number":188,"context_line":"        return out"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def create_dup(self, cmd, ip0, ip1, user, pw, id, src_lun,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaOE%3D","line":187,"updated":"2013-05-10 15:05:16.000000000","message":"use \" instead of \"\"\"","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return out"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def delete_lu(self, cmd, ip0, ip1, user, pw, id, lun):"},{"line_number":187,"context_line":"        out \u003d \"\"\"LUN: %s is successfully deleted\"\"\" % (lun)"},{"line_number":188,"context_line":"        return out"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def create_dup(self, cmd, ip0, ip1, user, pw, id, src_lun,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZnw%3D","line":187,"in_reply_to":"AAAAOn%2F%2FaOE%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def add_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":198,"context_line":"                       tgt_alias, initiator, init_alias):"},{"line_number":199,"context_line":"        out \u003d (\"\"\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":200,"context_line":"               successfully paired @ CTL: %s, Port: %s\"\"\" %"},{"line_number":201,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":202,"context_line":"        return out"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaOI%3D","line":200,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def add_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":198,"context_line":"                       tgt_alias, initiator, init_alias):"},{"line_number":199,"context_line":"        out \u003d (\"\"\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":200,"context_line":"               successfully paired @ CTL: %s, Port: %s\"\"\" %"},{"line_number":201,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":202,"context_line":"        return out"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZns%3D","line":200,"in_reply_to":"AAAAOn%2F%2FaOI%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"dfe0fcee6f255ed500d4a7cc353a2358ce21c5d7","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def del_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":205,"context_line":"                       initiator, force):"},{"line_number":206,"context_line":"        out \u003d (\"\"\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":207,"context_line":"               successfully un-paired  @ CTL: %s, Port: %s\"\"\" %"},{"line_number":208,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":209,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FaOc%3D","line":207,"updated":"2013-05-10 15:05:16.000000000","message":"ditto","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def del_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":205,"context_line":"                       initiator, force):"},{"line_number":206,"context_line":"        out \u003d (\"\"\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":207,"context_line":"               successfully un-paired  @ CTL: %s, Port: %s\"\"\" %"},{"line_number":208,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":209,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FZno%3D","line":207,"in_reply_to":"AAAAOn%2F%2FaOc%3D","updated":"2013-05-11 00:57:26.000000000","message":"Done","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f7c32cb938aef8941bb2192ecdbf61817555e345","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        return out"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class _Simulated_Hus_Backend(_Hus_Backend):"},{"line_number":156,"context_line":"    \"\"\"Simulation Back end. Talks to HUS.\"\"\""},{"line_number":157,"context_line":"    def __init__(self):"},{"line_number":158,"context_line":"        self.start_lun \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FXW8%3D","line":155,"updated":"2013-05-13 15:20:18.000000000","message":"What is this for exactly?\n\nIt seems like this should maybe be done in cinder/tests/ rather than embedded in the driver itself.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5f848095c1d9365705ae72cc05e5cad0cf4f3eb5","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        return out"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class _Simulated_Hus_Backend(_Hus_Backend):"},{"line_number":156,"context_line":"    \"\"\"Simulation Back end. Talks to HUS.\"\"\""},{"line_number":157,"context_line":"    def __init__(self):"},{"line_number":158,"context_line":"        self.start_lun \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FW1w%3D","line":155,"in_reply_to":"AAAAOn%2F%2FXW8%3D","updated":"2013-05-13 19:17:11.000000000","message":"This is the class that gets invoked for just the Array simulation purposes, AKA testing mode. I would like to leave it here, because any time somebody changes the actual Back End operation or behavior in this file, I want to make sure those changes are also reflected in the simulated portion of the array logic (in this very same file).\nThese future changes won\u0027t change the test logic (in cinder/tests), so can we please keep the array-logic separate from the cinder specific test logic..?\nThanks.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                                 \u0027--initiator\u0027, initiator,"},{"line_number":126,"context_line":"                                 \u0027--initiator_alias\u0027, init_alias,"},{"line_number":127,"context_line":"                                 # \u0027--chap_user\u0027, chap_user,"},{"line_number":128,"context_line":"                                 # \u0027--chap_password\u0027, chap_secret,"},{"line_number":129,"context_line":"                                 check_exit_code\u003dTrue)"},{"line_number":130,"context_line":"        LOG.debug(\u0027add_iscsi_conn: \u0027 + out + \u0027 -- \u0027 + err)"},{"line_number":131,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F9WU%3D","line":128,"updated":"2013-05-16 04:48:13.000000000","message":"remove commented code.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                                 \u0027--initiator\u0027, initiator,"},{"line_number":126,"context_line":"                                 \u0027--initiator_alias\u0027, init_alias,"},{"line_number":127,"context_line":"                                 # \u0027--chap_user\u0027, chap_user,"},{"line_number":128,"context_line":"                                 # \u0027--chap_password\u0027, chap_secret,"},{"line_number":129,"context_line":"                                 check_exit_code\u003dTrue)"},{"line_number":130,"context_line":"        LOG.debug(\u0027add_iscsi_conn: \u0027 + out + \u0027 -- \u0027 + err)"},{"line_number":131,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAO3%2F%2F86E%3D","line":128,"in_reply_to":"AAAAO3%2F%2F9WU%3D","updated":"2013-05-16 10:42:58.000000000","message":"Thanks. i shall.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cb5a7d5f57c7b8031a838ea1c250a91bda3d553b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        return out"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def create_lu(self, cmd, ip0, ip1, user, pw, id, hdp, start, end, size):"},{"line_number":175,"context_line":"        if self.start_lun \u003c int(start):  # initialize first time"},{"line_number":176,"context_line":"            self.start_lun \u003d int(start)"},{"line_number":177,"context_line":"        out \u003d (\"LUN: %d HDP: 9 size: %s MB, is successfully created\" %"},{"line_number":178,"context_line":"               (self.start_lun, size))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8AY%3D","line":175,"updated":"2013-05-16 17:40:20.000000000","message":"Style nit pick here, but I\u0027d prefer comments above the associated line, not on the same line.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        return out"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def create_lu(self, cmd, ip0, ip1, user, pw, id, hdp, start, end, size):"},{"line_number":175,"context_line":"        if self.start_lun \u003c int(start):  # initialize first time"},{"line_number":176,"context_line":"            self.start_lun \u003d int(start)"},{"line_number":177,"context_line":"        out \u003d (\"LUN: %d HDP: 9 size: %s MB, is successfully created\" %"},{"line_number":178,"context_line":"               (self.start_lun, size))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F70E%3D","line":175,"in_reply_to":"AAAAO3%2F%2F8AY%3D","updated":"2013-05-16 20:40:51.000000000","message":"I look at pep8 as the guide here. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cb5a7d5f57c7b8031a838ea1c250a91bda3d553b","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def add_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":194,"context_line":"                       tgt_alias, initiator, init_alias):"},{"line_number":195,"context_line":"        out \u003d (\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":196,"context_line":"               successfully paired @ CTL: %s, Port: %s\" %"},{"line_number":197,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":198,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8AM%3D","line":195,"updated":"2013-05-16 17:40:20.000000000","message":"Don\u0027t need to use \\ here, since you can use \"\"\"","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def add_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":194,"context_line":"                       tgt_alias, initiator, init_alias):"},{"line_number":195,"context_line":"        out \u003d (\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":196,"context_line":"               successfully paired @ CTL: %s, Port: %s\" %"},{"line_number":197,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":198,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F70M%3D","line":195,"in_reply_to":"AAAAO3%2F%2F8AM%3D","updated":"2013-05-16 20:40:51.000000000","message":"Need the backslash. Else we get a \\n inserted in the line -- which is not how the actual output comes out of the backend. And I am trying to fly past the 80 character rule here..","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cb5a7d5f57c7b8031a838ea1c250a91bda3d553b","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def del_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":201,"context_line":"                       initiator, force):"},{"line_number":202,"context_line":"        out \u003d (\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":203,"context_line":"               successfully un-paired  @ CTL: %s, Port: %s\" %"},{"line_number":204,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":205,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F8AE%3D","line":202,"updated":"2013-05-16 17:40:20.000000000","message":"same here \"\"\" or \"\"","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    def del_iscsi_conn(self, cmd, ip0, ip1, user, pw, id, lun, ctl, port, iqn,"},{"line_number":201,"context_line":"                       initiator, force):"},{"line_number":202,"context_line":"        out \u003d (\"iSCSI Initiator: %s, index: 26, and Target: %s, index 8 is \\"},{"line_number":203,"context_line":"               successfully un-paired  @ CTL: %s, Port: %s\" %"},{"line_number":204,"context_line":"               (initiator, iqn, ctl, port))"},{"line_number":205,"context_line":"        return out"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAO3%2F%2F70I%3D","line":202,"in_reply_to":"AAAAO3%2F%2F8AE%3D","updated":"2013-05-16 20:40:51.000000000","message":"(same logic as above)","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"a3fb318ef866c09dfa153dd8d57bc00bf040146c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return out"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"class SimulatedHusBackend(HusBackend):"},{"line_number":152,"context_line":"    \"\"\"Simulation Back end. Talks to HUS.\"\"\""},{"line_number":153,"context_line":"    def __init__(self):"},{"line_number":154,"context_line":"        self.start_lun \u003d 0"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2F1IY%3D","line":151,"updated":"2013-05-22 04:17:13.000000000","message":"Along with what John was saying, this should be in the test file, not within the actual implementation.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2a6fc091b0492440a1ef0881486d1136fe38085","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return out"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"class SimulatedHusBackend(HusBackend):"},{"line_number":152,"context_line":"    \"\"\"Simulation Back end. Talks to HUS.\"\"\""},{"line_number":153,"context_line":"    def __init__(self):"},{"line_number":154,"context_line":"        self.start_lun \u003d 0"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPH%2F%2FuTk%3D","line":151,"in_reply_to":"AAAAPH%2F%2F1IY%3D","updated":"2013-05-24 13:05:23.000000000","message":"Moved.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":23,"context_line":"from cinder import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(\"cinder.volume.driver\")"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class HusBackend:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPH%2F%2FpNo%3D","line":25,"updated":"2013-05-28 18:12:12.000000000","message":"logging.getLogger(__name__) ? I am not sure how exactly logger works, so pardon me if I am wrong here","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"}],"etc/cinder/cinder.conf.sample":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f7c32cb938aef8941bb2192ecdbf61817555e345","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"# default configuration file location/name is (string) :"},{"line_number":1315,"context_line":"# cinder_hds_config_file \u003d /opt/hds/hus/cinder_hds_conf.xml"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":""},{"line_number":1318,"context_line":"#"},{"line_number":1319,"context_line":"# Options defined in cinder.volume.iscsi"},{"line_number":1320,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAOn%2F%2FXXY%3D","line":1317,"updated":"2013-05-13 15:20:18.000000000","message":"hds.py also lists BoolOpt simulated_back_end.  If that will remain, it should be here -- need to regen this file w/ tools/conf/generate_sample.sh.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"5f848095c1d9365705ae72cc05e5cad0cf4f3eb5","unresolved":false,"context_lines":[{"line_number":1314,"context_line":"# default configuration file location/name is (string) :"},{"line_number":1315,"context_line":"# cinder_hds_config_file \u003d /opt/hds/hus/cinder_hds_conf.xml"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":""},{"line_number":1318,"context_line":"#"},{"line_number":1319,"context_line":"# Options defined in cinder.volume.iscsi"},{"line_number":1320,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAOn%2F%2FW2I%3D","line":1317,"in_reply_to":"AAAAOn%2F%2FXXY%3D","updated":"2013-05-13 19:17:11.000000000","message":"Thanks, Eric. I did not know about this script. I can add it here.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"# Don\u0027t change this. It is used only for self tests (boolean) :"},{"line_number":1318,"context_line":"# hds_simulated_back_end\u003dfalse"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"#"},{"line_number":1322,"context_line":"# Options defined in cinder.volume.iscsi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAO3%2F%2F9WQ%3D","line":1319,"updated":"2013-05-16 04:48:13.000000000","message":"If you don\u0027t want users changing this, then why make this public in a sample conf file?","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"# Don\u0027t change this. It is used only for self tests (boolean) :"},{"line_number":1318,"context_line":"# hds_simulated_back_end\u003dfalse"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"#"},{"line_number":1322,"context_line":"# Options defined in cinder.volume.iscsi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAAO3%2F%2F86A%3D","line":1319,"in_reply_to":"AAAAO3%2F%2F9WQ%3D","updated":"2013-05-16 10:42:58.000000000","message":"This option is picked up for the simulation of the back end. It is listed here just for completeness, and initially was not listed here, but Eric Harney pointed it out. Please look at his comments for patch-set 2. Specifically, it is because of tools/conf/generate_sample.sh. Thanks.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"27374147138e340b7d20360679b2b3922e442d09","unresolved":false,"context_lines":[{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"# Don\u0027t change this. It is used only for self tests (boolean) :"},{"line_number":1318,"context_line":"# hds_simulated_back_end\u003dfalse"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"#"},{"line_number":1322,"context_line":"# Options defined in cinder.volume.iscsi"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAPH%2F%2F1%2FY%3D","line":1319,"updated":"2013-05-21 21:55:53.000000000","message":"Wouldn\u0027t it be better to set something up via tests rather than expose a test only config item to the admin?","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"a3fb318ef866c09dfa153dd8d57bc00bf040146c","unresolved":false,"context_lines":[{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"# Don\u0027t change this. It is used only for self tests (boolean) :"},{"line_number":1318,"context_line":"# hds_simulated_back_end\u003dfalse"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"#"},{"line_number":1322,"context_line":"# Options defined in cinder.volume.iscsi"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAPH%2F%2F1IU%3D","line":1319,"in_reply_to":"AAAAPH%2F%2F1%2FY%3D","updated":"2013-05-22 04:17:13.000000000","message":"+1. Simulation should be in tests.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"d2a6fc091b0492440a1ef0881486d1136fe38085","unresolved":false,"context_lines":[{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"# Don\u0027t change this. It is used only for self tests (boolean) :"},{"line_number":1318,"context_line":"# hds_simulated_back_end\u003dfalse"},{"line_number":1319,"context_line":""},{"line_number":1320,"context_line":""},{"line_number":1321,"context_line":"#"},{"line_number":1322,"context_line":"# Options defined in cinder.volume.iscsi"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAPH%2F%2FuTc%3D","line":1319,"in_reply_to":"AAAAPH%2F%2F1%2FY%3D","updated":"2013-05-24 13:05:23.000000000","message":"Removed. Patch 7.","commit_id":"d1035de95ce03f484191b4f67c59cd72092d0f07"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"30a9411cbfca3d09607641a17ba8f014cd3127fb","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"# Driver to use for volume creation (string value)"},{"line_number":1346,"context_line":"#volume_driver\u003dcinder.volume.drivers.lvm.LVMISCSIDriver"},{"line_number":1347,"context_line":""},{"line_number":1348,"context_line":"# Total option count: 301"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAPH%2F%2FpNE%3D","line":1348,"updated":"2013-05-28 18:12:12.000000000","message":"only one config option is listed here","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"ff2f7edae1c16813cc1f8869c8a56c322d9bc3a9","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"# Driver to use for volume creation (string value)"},{"line_number":1346,"context_line":"#volume_driver\u003dcinder.volume.drivers.lvm.LVMISCSIDriver"},{"line_number":1347,"context_line":""},{"line_number":1348,"context_line":"# Total option count: 301"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAAPH%2F%2FoYM%3D","line":1348,"in_reply_to":"AAAAPH%2F%2FpNE%3D","updated":"2013-05-29 04:15:58.000000000","message":"I am assuming you mean the updated count is wrong. I shall fix it. TBH, I thought the count is automatically generated by a script, but I should fix it anyways. Thanks.","commit_id":"172e4caa9d740cb1150f289392dd2e2741548fbc"}],"etc/cinder/rootwrap.conf":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b716aeda20cd161e8fdaa21fca38ccba85c5a8b1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":1,"id":"AAAAOn%2F%2FaIE%3D","line":13,"updated":"2013-05-10 15:45:08.000000000","message":"Seems to me that this change should be in a separate patch","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"b4deb68e9e66b05b7aad678a628016f77f9b80e0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":1,"id":"AAAAOn%2F%2FZ5g%3D","line":13,"in_reply_to":"AAAAOn%2F%2FaIE%3D","updated":"2013-05-11 00:57:26.000000000","message":"No, this affects the HDS driver, i.e. this check-in. We would like to have /usr/local/bin available for executing some specific commands. Thanks.","commit_id":"3cffed2c4d39d13975d2b10b8459054c4f92c68c"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"37f62ef9c968c3b3125be68345fcb92b3eca0217","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":3,"id":"AAAAO3%2F%2F9WM%3D","line":13,"updated":"2013-05-16 04:48:13.000000000","message":"What do we need from /usr/local/bin ?","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3eca7b7bcbd6d8c74151efb5b16d09ca37915e14","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":3,"id":"AAAAO3%2F%2F8DM%3D","line":13,"in_reply_to":"AAAAO3%2F%2F858%3D","updated":"2013-05-16 17:28:08.000000000","message":"So are you saying you have to install some app in /usr/local/bin or /usr/bin in order to make your driver work?","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"7d6f34a9b61896d21f1940cf790babf128315817","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":3,"id":"AAAAO3%2F%2F858%3D","line":13,"in_reply_to":"AAAAO3%2F%2F9WM%3D","updated":"2013-05-16 10:42:58.000000000","message":"/usr/local/bin is another traditional path element. We would prefer to add a utility here which can talk to HDS array to this location. It is not necessary to make the above change. If you don\u0027t like it, I can use /usr/bin, but would prefer not to pollute that space. Thanks.","commit_id":"0840b775d9abf67999028411ccca9b38fe933ec5"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":4,"id":"AAAAO3%2F%2F8JE%3D","line":13,"updated":"2013-05-16 16:49:47.000000000","message":"Justification for this?","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"84acbae8a99740c42d6524bd0023e3db712145c5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# explicitely specify a full path (separated by \u0027,\u0027)"},{"line_number":11,"context_line":"# If not specified, defaults to system PATH environment variable."},{"line_number":12,"context_line":"# These directories MUST all be only writeable by root !"},{"line_number":13,"context_line":"exec_dirs\u003d/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Enable logging to syslog"},{"line_number":16,"context_line":"# Default value is False"}],"source_content_type":"text/plain","patch_set":4,"id":"AAAAO3%2F%2F74A%3D","line":13,"in_reply_to":"AAAAO3%2F%2F8JE%3D","updated":"2013-05-16 20:40:51.000000000","message":"(Already mentioned in prior drafts.) This is a place where we would  like to install a utility to talk to HDS array. I can place that utility in /usr/bin, but would prefer to not pollute that space. This is really not a issue for me, if you think /usr/local/bin should not be used at all, just let me know. Thanks.","commit_id":"263cb7de3b5a6f9fdb6b017e8b4b24d79bbeaa5b"}],"etc/cinder/rootwrap.d/volume.filters":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"6e2c527ce4d431a2b668d450a786b6fcba209266","unresolved":false,"context_lines":[{"line_number":54,"context_line":"rm: CommandFilter, rm, root"},{"line_number":55,"context_line":"lvs: CommandFilter, lvs, root"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# cinder/volumes/drivers/hds/hds.py: "},{"line_number":58,"context_line":"hus_cmd: CommandFilter, hus_cmd, root"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAOn%2F%2FX1Q%3D","line":57,"updated":"2013-05-13 09:57:31.000000000","message":"I think you accidentally overwrote the scality driver variables.. Also, the scality driver has been moved to cinder/volume/drivers/scality.py, so I think it would be nice if  you can fix the path for scality driver too while fixing the overwrite..","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":7447,"name":"Lakhinder Walia","email":"lakhinder.walia@hds.com","username":"lakhindr"},"change_message_id":"147866c2ae6906bf011dd14efcce53861be78c48","unresolved":false,"context_lines":[{"line_number":54,"context_line":"rm: CommandFilter, rm, root"},{"line_number":55,"context_line":"lvs: CommandFilter, lvs, root"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# cinder/volumes/drivers/hds/hds.py: "},{"line_number":58,"context_line":"hus_cmd: CommandFilter, hus_cmd, root"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAOn%2F%2FXhM%3D","line":57,"in_reply_to":"AAAAOn%2F%2FX1Q%3D","updated":"2013-05-13 13:51:15.000000000","message":"Thanks Rushi. But no there is no overwrite. mount and dd are already placed in the list above, so they were repeats. I had discussed this with John Griffith, and was going to clean this up when I updated the list. If you like I can put them back, but they are duplicates.","commit_id":"d6cadcc054501df4b089c48caa50d1389736d22a"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"1029f6dcd21ea2ee54a3695ee7f3bad6615d8a7d","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# cinder/volume/scality.py"},{"line_number":58,"context_line":"mount: CommandFilter, mount, root"},{"line_number":59,"context_line":"dd: CommandFilter, dd, root"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAO3%2F%2F8I8%3D","side":"PARENT","line":59,"updated":"2013-05-16 16:49:47.000000000","message":"Why did you get rid of scality\u0027s stuff?","commit_id":"7dad062dd694c85af3ecd85e07a3246cef204a61"}]}
