)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1a930d6b_f1cdee5e","updated":"2015-01-21 11:32:37.000000000","message":"You should change you commit message back to how it was in patch 1. \u0027Address review comments given for patch 1\u0027 doesn\u0027t make sense as a title and the actual title has now merged into the body of the message. Also there should be a space after each \u0027.\u0027","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"4572a1d2daa05ee56d09c78e777cb763de0b7add","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     nikeshmahalka \u003cNikesh.Mahalka@emulex.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-01-27 18:55:18 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Address review comments given for patch 2."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added unit test cases for scst target."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a930d6b_185ad229","line":7,"updated":"2015-01-27 13:50:17.000000000","message":"This title needs to be something useful that gives a summary of the change. Gerrit history in a commit is not useful and can be looked at later by looking at the review page again.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"960a14da2fcebabf6ddd4b64423918eda914cf29"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"001a47a3bf45185178b892711151236f520f230e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iSCSI SCST Target support to cinder."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixed pep8 errors in test_scst_driver.py."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I449143d125808d28758f3d438d7d1476a544c38b"},{"line_number":12,"context_line":"Implements: blueprint scst-iscsi-backend-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa81d914_83dc10e6","line":9,"updated":"2015-01-29 14:22:40.000000000","message":"There weren\u0027t pep8 errors to begin with, you are just updating your patch to get rid of the errors you introduced. That shouldn\u0027t be a part of your commit message.\n\nDon\u0027t change this to be specific for each patchset revision. Your commit message should state what the patch is trying to address. \n\nFollow guidelines here:\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"7228d25c8d194ebc9d86429a44bc7359e974d40e"}],"cinder/exception.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"60789be15858227c046d2c20ec2e6d6edccb7b85","unresolved":false,"context_lines":[{"line_number":915,"context_line":""},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"class SCSTTargetDriverEnableFailed(CinderException):"},{"line_number":918,"context_line":"    message \u003d _(\"Failed to enable SCST target driver.\")"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"class SCSTTargetEnableFailed(CinderException):"}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_c477e19d","line":918,"updated":"2015-02-10 17:30:02.000000000","message":"Do we need all of these custom exceptions?  I\u0027d like to get back to having more generalized exceptions for Targets in general and putting details specific to each one in the message.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fce26158057ebd7337cc632848c756bba7ab877e","unresolved":false,"context_lines":[{"line_number":915,"context_line":""},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"class SCSTTargetDriverEnableFailed(CinderException):"},{"line_number":918,"context_line":"    message \u003d _(\"Failed to enable SCST target driver.\")"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"class SCSTTargetEnableFailed(CinderException):"}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_ff61ac39","line":918,"in_reply_to":"da86d52c_aa1a9d6c","updated":"2015-02-11 13:17:29.000000000","message":"I think John considers that there are too many exceptions for Targets, e.g ISCSITargetDriverEnableFailed and ISCSITargetEnableFailed you could  unite in one exception, but specify fail reason with with exception.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"b4501d593677b8ee5b4cf5f77e6192cff71d8333","unresolved":false,"context_lines":[{"line_number":915,"context_line":""},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"class SCSTTargetDriverEnableFailed(CinderException):"},{"line_number":918,"context_line":"    message \u003d _(\"Failed to enable SCST target driver.\")"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"class SCSTTargetEnableFailed(CinderException):"}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_aa1a9d6c","line":918,"in_reply_to":"da86d52c_c477e19d","updated":"2015-02-11 06:46:14.000000000","message":"John, We will modify the exceptions to a more generic name and call in with specific details to put in the message. For e.g we will change to:\nclass ISCSITargetDriverEnableFailed(CinderException):\n    message \u003d _(\"Failed to enable %(name) target driver.\")\nclass ISCSITargetEnableFailed(CinderException):\t\n    message \u003d _(\"Failed to enable %(name) target.\")\n\nand so on for the remaining exceptions as well. Please let us know if this is okay.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"}],"cinder/tests/targets/test_scst_driver.py":[{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"28a6328fce71dfca77482a19765d51dceaa315cc","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder.volume import configuration as conf\r"},{"line_number":24,"context_line":"from cinder.volume.targets import scst\r"},{"line_number":25,"context_line":"from cinder.volume import utils as vutils\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"\r"},{"line_number":28,"context_line":"class TestScstAdmDriver(test.TestCase):\r"},{"line_number":29,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_5a8a8d64","line":26,"updated":"2015-01-27 15:08:34.000000000","message":"Please use unix like end lines","commit_id":"960a14da2fcebabf6ddd4b64423918eda914cf29"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"60789be15858227c046d2c20ec2e6d6edccb7b85","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        def _fake_execute(*args, **kwargs):"},{"line_number":121,"context_line":"            return self.fake_iscsi_scan, None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.stubs.Set(utils,"},{"line_number":124,"context_line":"                       \u0027execute\u0027,"},{"line_number":125,"context_line":"                       _fake_execute)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_c4e0c1ce","line":123,"updated":"2015-02-10 17:30:02.000000000","message":"Not a huge deal but I think we prefer mock.path for these rather than stubs.  Part of this is to make sure cleanup is done on stubs properly.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"b4501d593677b8ee5b4cf5f77e6192cff71d8333","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        def _fake_execute(*args, **kwargs):"},{"line_number":121,"context_line":"            return self.fake_iscsi_scan, None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.stubs.Set(utils,"},{"line_number":124,"context_line":"                       \u0027execute\u0027,"},{"line_number":125,"context_line":"                       _fake_execute)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_47d4bcbc","line":123,"in_reply_to":"da86d52c_c4e0c1ce","updated":"2015-02-11 06:46:14.000000000","message":"John, We will change the code to use mock.patch.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"}],"cinder/volume/driver.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"               default\u003dNone,"},{"line_number":134,"context_line":"               help\u003d\u0027Certain ISCSI targets have predefined Target names, \u0027"},{"line_number":135,"context_line":"                    \u0027Target driver uses this name.\u0027),"},{"line_number":136,"context_line":"    cfg.StrOpt(\u0027target_driver\u0027,"},{"line_number":137,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":138,"context_line":"               help\u003d\u0027SCST Target implementation can choose from multiple \u0027"},{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_def60dd8","line":136,"updated":"2015-01-13 05:14:35.000000000","message":"target_driver actually seems like it should be reserved for cinder.volume.targets.driver, not SCST. What do you think John?","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        # NOTE(vish): db is set by Manager"},{"line_number":205,"context_line":"        self.db \u003d kwargs.get(\u0027db\u0027)"},{"line_number":206,"context_line":"        self.host \u003d kwargs.get(\u0027host\u0027)"},{"line_number":207,"context_line":"        LOG.info((\"kwargs driver %s \") % dir(kwargs))"},{"line_number":208,"context_line":"        #LOG.info((\"driver host %s \") % self.host)"},{"line_number":209,"context_line":"        self.configuration \u003d kwargs.get(\u0027configuration\u0027, None)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_91e82a7e","line":207,"updated":"2015-01-21 11:32:37.000000000","message":"Have these two lines been left in by mistake when you were testing you patch?","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"28a6328fce71dfca77482a19765d51dceaa315cc","unresolved":false,"context_lines":[{"line_number":142,"context_line":"               help\u003d\u0027\u0027),"},{"line_number":143,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":144,"context_line":"               default\u003dNone,"},{"line_number":145,"context_line":"               help\u003d\u0027\u0027),"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"]"},{"line_number":148,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a930d6b_3a75c131","line":145,"updated":"2015-01-27 15:08:34.000000000","message":"You need to fill help info for all options","commit_id":"960a14da2fcebabf6ddd4b64423918eda914cf29"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6b45dc40b9f5d98e5cba5dbc8735d4e894fb0ffe","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                default\u003dFalse,"},{"line_number":130,"context_line":"                help\u003d\u0027Tell driver to use SSL for connection to backend \u0027"},{"line_number":131,"context_line":"                     \u0027storage if the driver supports it.\u0027),"},{"line_number":132,"context_line":"    cfg.StrOpt(\u0027target_name\u0027,"},{"line_number":133,"context_line":"               default\u003dNone,"},{"line_number":134,"context_line":"               help\u003d\u0027Certain ISCSI targets have predefined Target names, \u0027"},{"line_number":135,"context_line":"                    \u0027Target driver uses this name.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_e17be589","line":132,"updated":"2015-01-30 04:59:27.000000000","message":"I\u0027m not following why you need a new config option here or even exactly what the point of this conf option is?","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"62c102bada82f1d937dc460bedb3428913e1acd1","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                default\u003dFalse,"},{"line_number":130,"context_line":"                help\u003d\u0027Tell driver to use SSL for connection to backend \u0027"},{"line_number":131,"context_line":"                     \u0027storage if the driver supports it.\u0027),"},{"line_number":132,"context_line":"    cfg.StrOpt(\u0027target_name\u0027,"},{"line_number":133,"context_line":"               default\u003dNone,"},{"line_number":134,"context_line":"               help\u003d\u0027Certain ISCSI targets have predefined Target names, \u0027"},{"line_number":135,"context_line":"                    \u0027Target driver uses this name.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_a48bbb66","line":132,"in_reply_to":"fa81d914_e17be589","updated":"2015-01-30 05:57:21.000000000","message":"Certain SCST target drivers use predefined Target IQN names on which LUN\u0027s are created. This option allows a mechanism to specify the target IQN name on which the LUN\u0027s are created.\nIf this config option is not set, then an SCST target is created dynamically using scstadmin command at the time of creating the LUN/Volume.\nThis option can be used by SCST target drivers who create hard coded target IQN names and don\u0027t have the capability to create target\u0027s dynamically after loading the driver.\nWe can use \"scst_target_iqn_name\" instead for this parameter.","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6b45dc40b9f5d98e5cba5dbc8735d4e894fb0ffe","unresolved":false,"context_lines":[{"line_number":133,"context_line":"               default\u003dNone,"},{"line_number":134,"context_line":"               help\u003d\u0027Certain ISCSI targets have predefined Target names, \u0027"},{"line_number":135,"context_line":"                    \u0027Target driver uses this name.\u0027),"},{"line_number":136,"context_line":"    cfg.StrOpt(\u0027target_driver\u0027,"},{"line_number":137,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":138,"context_line":"               help\u003d\u0027SCST Target implementation can choose from multiple \u0027"},{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_21a97ddf","line":136,"updated":"2015-01-30 04:59:27.000000000","message":"so this just makes things confusing IMO\n\nThis particular option is SCST specific and I\u0027m not sure if there\u0027s a generic var to use; it should def have a different name.  The name \"target_driver\" is misleading and would lead one to believe it specifies what target driver the volume-driver should be using.","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"62c102bada82f1d937dc460bedb3428913e1acd1","unresolved":false,"context_lines":[{"line_number":133,"context_line":"               default\u003dNone,"},{"line_number":134,"context_line":"               help\u003d\u0027Certain ISCSI targets have predefined Target names, \u0027"},{"line_number":135,"context_line":"                    \u0027Target driver uses this name.\u0027),"},{"line_number":136,"context_line":"    cfg.StrOpt(\u0027target_driver\u0027,"},{"line_number":137,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":138,"context_line":"               help\u003d\u0027SCST Target implementation can choose from multiple \u0027"},{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_c407cfc8","line":136,"in_reply_to":"fa81d914_21a97ddf","updated":"2015-01-30 05:57:21.000000000","message":"Yes, this is specific to SCST. \nThe default SCST target driver is ISCSI. Various vendors have their own drivers (for e.g Emulex has the ocs_xe100 driver). This driver is given as an input parameter to the scstadmin command. We will use this config option to specify which SCST target driver to use.\nWe can replace this name to \"scst_target_driver\".","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6b45dc40b9f5d98e5cba5dbc8735d4e894fb0ffe","unresolved":false,"context_lines":[{"line_number":137,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":138,"context_line":"               help\u003d\u0027SCST Target implementation can choose from multiple \u0027"},{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"},{"line_number":140,"context_line":"    cfg.StrOpt(\u0027chap_username\u0027,"},{"line_number":141,"context_line":"               default\u003dNone,"},{"line_number":142,"context_line":"               help\u003d\u0027CHAP username defined by Target\u0027),"},{"line_number":143,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_01563906","line":140,"updated":"2015-01-30 04:59:27.000000000","message":"We can/should put these in and do a follow up patch to consolidate all of the duplicate conf entries we have for chap user/password.\n\nIn the meantime however we should make a better help message:\n\"CHAP username to use for iSCSI Targets\" or something along those lines.","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"62c102bada82f1d937dc460bedb3428913e1acd1","unresolved":false,"context_lines":[{"line_number":137,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":138,"context_line":"               help\u003d\u0027SCST Target implementation can choose from multiple \u0027"},{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"},{"line_number":140,"context_line":"    cfg.StrOpt(\u0027chap_username\u0027,"},{"line_number":141,"context_line":"               default\u003dNone,"},{"line_number":142,"context_line":"               help\u003d\u0027CHAP username defined by Target\u0027),"},{"line_number":143,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_64f8e3c3","line":140,"in_reply_to":"fa81d914_01563906","updated":"2015-01-30 05:57:21.000000000","message":"Sure. We will change the help message to \"CHAP username to use for iSCSI Targets\"","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6b45dc40b9f5d98e5cba5dbc8735d4e894fb0ffe","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"},{"line_number":140,"context_line":"    cfg.StrOpt(\u0027chap_username\u0027,"},{"line_number":141,"context_line":"               default\u003dNone,"},{"line_number":142,"context_line":"               help\u003d\u0027CHAP username defined by Target\u0027),"},{"line_number":143,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":144,"context_line":"               default\u003dNone,"},{"line_number":145,"context_line":"               help\u003d\u0027CHAP password defined by Target\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_6140d534","line":142,"updated":"2015-01-30 04:59:27.000000000","message":"same note as above","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"62c102bada82f1d937dc460bedb3428913e1acd1","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                    \u0027SCST target drivers.\u0027),"},{"line_number":140,"context_line":"    cfg.StrOpt(\u0027chap_username\u0027,"},{"line_number":141,"context_line":"               default\u003dNone,"},{"line_number":142,"context_line":"               help\u003d\u0027CHAP username defined by Target\u0027),"},{"line_number":143,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":144,"context_line":"               default\u003dNone,"},{"line_number":145,"context_line":"               help\u003d\u0027CHAP password defined by Target\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa81d914_840157b1","line":142,"in_reply_to":"fa81d914_6140d534","updated":"2015-01-30 05:57:21.000000000","message":"Sure. We will change the help message to \"CHAP password to use for iSCSI Targets\"","commit_id":"d791b40a4b27dcf69182ca83632ae314be3f058d"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"005e3da5700b671fa424911a45c99bf3409afc96","unresolved":false,"context_lines":[{"line_number":160,"context_line":"               help\u003d\u0027CHAP username to use for iSCSI Targets\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":162,"context_line":"               default\u003dNone,"},{"line_number":163,"context_line":"               help\u003d\u0027CHAP password to use for iSCSI Targets\u0027),"},{"line_number":164,"context_line":"]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_e9044c4b","line":163,"updated":"2015-02-06 05:33:38.000000000","message":"Any reason why you need to override this instead of using vutils ? Is it just for the scst_group option ?","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"cc8bbec69209a461257b84fb7bef7d220878d4e5","unresolved":false,"context_lines":[{"line_number":160,"context_line":"               help\u003d\u0027CHAP username to use for iSCSI Targets\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":162,"context_line":"               default\u003dNone,"},{"line_number":163,"context_line":"               help\u003d\u0027CHAP password to use for iSCSI Targets\u0027),"},{"line_number":164,"context_line":"]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f5a5ffa1","line":163,"in_reply_to":"da86d52c_e9044c4b","updated":"2015-02-06 08:06:02.000000000","message":"Yes. There are some SCST hardware targets that have hardcoded CHAP username and password defined, and this needs to be sent while logging in to this target. The chap_username and chap_password parameters defined here in the conf file provide us a way to specify these hardcoded CHAP strings, which can be sent to the initiator, for it to use while logging in.\nIf any other targets other than SCST also would need to define hardcoded CHAP strings, these parameters can be used for them as well.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"1158685f3a8cac836a6bf727acac6c5a6432241a","unresolved":false,"context_lines":[{"line_number":160,"context_line":"               help\u003d\u0027CHAP username to use for iSCSI Targets\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":162,"context_line":"               default\u003dNone,"},{"line_number":163,"context_line":"               help\u003d\u0027CHAP password to use for iSCSI Targets\u0027),"},{"line_number":164,"context_line":"]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_ab116305","line":163,"in_reply_to":"da86d52c_f5a5ffa1","updated":"2015-02-06 09:42:18.000000000","message":"Okay, I haven\u0027t seen any such targets, but I am not familiar enough with scst, so I will take your word for it","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"75af33aec5c03408258fd660f0443fa5a8aa8ece","unresolved":false,"context_lines":[{"line_number":160,"context_line":"               help\u003d\u0027CHAP username to use for iSCSI Targets\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027chap_password\u0027,"},{"line_number":162,"context_line":"               default\u003dNone,"},{"line_number":163,"context_line":"               help\u003d\u0027CHAP password to use for iSCSI Targets\u0027),"},{"line_number":164,"context_line":"]"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"# for backward compatibility"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_f2dd4c71","line":163,"updated":"2015-02-11 20:42:19.000000000","message":"It would be nice to use these with https://review.openstack.org/#/c/148038/ when it lands","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"}],"cinder/volume/targets/scst.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d9a0e793","line":13,"updated":"2015-01-13 05:14:35.000000000","message":"os is never used","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_5044f018","line":13,"in_reply_to":"3a961159_d9a0e793","updated":"2015-01-20 07:19:39.000000000","message":"Will remove.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_f99be361","line":14,"updated":"2015-01-13 05:14:35.000000000","message":"re is never used.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_50c31039","line":14,"in_reply_to":"3a961159_f99be361","updated":"2015-01-20 07:19:39.000000000","message":"Will remove.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_19ab4f76","line":15,"updated":"2015-01-13 05:14:35.000000000","message":"time is never used.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_90bd78b4","line":15,"in_reply_to":"3a961159_19ab4f76","updated":"2015-01-20 07:19:39.000000000","message":"Will remove.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_79b7f3d7","line":16,"updated":"2015-01-13 05:14:35.000000000","message":"six is never used.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import os"},{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b0d9942a","line":16,"in_reply_to":"3a961159_79b7f3d7","updated":"2015-01-20 07:19:39.000000000","message":"Will remove.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"},{"line_number":20,"context_line":"from cinder.volume.targets import iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_de1d2d12","line":17,"updated":"2015-01-13 05:14:35.000000000","message":"Fix the grouping of these modules, according to http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"import re"},{"line_number":15,"context_line":"import time"},{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"},{"line_number":20,"context_line":"from cinder.volume.targets import iscsi"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d0de2010","line":17,"in_reply_to":"3a961159_de1d2d12","updated":"2015-01-20 07:19:39.000000000","message":"Will fix this.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"},{"line_number":20,"context_line":"from cinder.volume.targets import iscsi"},{"line_number":21,"context_line":"from cinder.volume import utils as vutils"},{"line_number":22,"context_line":"from cinder.openstack.common import fileutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_99ae5f80","line":19,"updated":"2015-01-13 05:14:35.000000000","message":"_LW and _LE are never used.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import six"},{"line_number":17,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":18,"context_line":"from cinder import exception"},{"line_number":19,"context_line":"from cinder.i18n import _, _LI, _LW, _LE"},{"line_number":20,"context_line":"from cinder.volume.targets import iscsi"},{"line_number":21,"context_line":"from cinder.volume import utils as vutils"},{"line_number":22,"context_line":"from cinder.openstack.common import fileutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_30cda45f","line":19,"in_reply_to":"3a961159_99ae5f80","updated":"2015-01-20 07:19:39.000000000","message":"Will remove unused  modules _LW and _LE.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.target_driver \u003d self.configuration.safe_get(\u0027target_driver\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _get_target(self, iqn):"},{"line_number":39,"context_line":"        (out, err) \u003d self._execute(\u0027scstadmin\u0027,"},{"line_number":40,"context_line":"                                   \u0027-list_target\u0027, run_as_root\u003dTrue)"},{"line_number":41,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":42,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_bedea13c","line":39,"updated":"2015-01-13 05:14:35.000000000","message":"prefix unused err with underscore. so \u0027_err\u0027.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.target_driver \u003d self.configuration.safe_get(\u0027target_driver\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _get_target(self, iqn):"},{"line_number":39,"context_line":"        (out, err) \u003d self._execute(\u0027scstadmin\u0027,"},{"line_number":40,"context_line":"                                   \u0027-list_target\u0027, run_as_root\u003dTrue)"},{"line_number":41,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":42,"context_line":"        for line in lines:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_70d72cef","line":39,"in_reply_to":"3a961159_bedea13c","updated":"2015-01-20 07:19:39.000000000","message":"Will change err as \u0027_err\u0027","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        (out, err) \u003d self._execute(\u0027scstadmin\u0027,"},{"line_number":40,"context_line":"                                   \u0027-list_target\u0027, run_as_root\u003dTrue)"},{"line_number":41,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":42,"context_line":"        for line in lines:"},{"line_number":43,"context_line":"            if iqn in line:"},{"line_number":44,"context_line":"                return self._target_attribute(iqn)"},{"line_number":45,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_1e9df566","line":42,"updated":"2015-01-13 05:14:35.000000000","message":"Instead of this do:\n\nif iqn in lines:\n    return self._target_attribute(iqn)","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        (out, err) \u003d self._execute(\u0027scstadmin\u0027,"},{"line_number":40,"context_line":"                                   \u0027-list_target\u0027, run_as_root\u003dTrue)"},{"line_number":41,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"},{"line_number":42,"context_line":"        for line in lines:"},{"line_number":43,"context_line":"            if iqn in line:"},{"line_number":44,"context_line":"                return self._target_attribute(iqn)"},{"line_number":45,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d005407a","line":42,"in_reply_to":"3a961159_1e9df566","updated":"2015-01-20 07:19:39.000000000","message":"Will change the logic according to your feedback.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return None"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _target_attribute(self, iqn):"},{"line_number":48,"context_line":"        (out, err) \u003d self._execute(\u0027scstadmin\u0027, \u0027-list_tgt_attr\u0027, iqn,"},{"line_number":49,"context_line":"                                   \u0027-driver\u0027, self.target_driver,"},{"line_number":50,"context_line":"                                   run_as_root\u003dTrue)"},{"line_number":51,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_dee44d10","line":48,"updated":"2015-01-13 05:14:35.000000000","message":"prefix unused err with underscore. so \u0027_err\u0027.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        return None"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _target_attribute(self, iqn):"},{"line_number":48,"context_line":"        (out, err) \u003d self._execute(\u0027scstadmin\u0027, \u0027-list_tgt_attr\u0027, iqn,"},{"line_number":49,"context_line":"                                   \u0027-driver\u0027, self.target_driver,"},{"line_number":50,"context_line":"                                   run_as_root\u003dTrue)"},{"line_number":51,"context_line":"        lines \u003d out.split(\u0027\\n\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b3227ea4","line":48,"in_reply_to":"3a961159_dee44d10","updated":"2015-01-20 07:19:39.000000000","message":"Will change err as \u0027_err\u0027.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if (length \u003d\u003d 0) or (luns[0] !\u003d 1):"},{"line_number":61,"context_line":"            return 1"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        else:"},{"line_number":64,"context_line":"            for x in luns:"},{"line_number":65,"context_line":"                if x \u003c 256:"},{"line_number":66,"context_line":"                    if (luns[length-1] \u003d\u003d x) or (luns[x-1] + 1 !\u003d luns[x]):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_5e8dbd29","line":63,"updated":"2015-01-13 05:14:35.000000000","message":"No need for the else here.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if (length \u003d\u003d 0) or (luns[0] !\u003d 1):"},{"line_number":61,"context_line":"            return 1"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        else:"},{"line_number":64,"context_line":"            for x in luns:"},{"line_number":65,"context_line":"                if x \u003c 256:"},{"line_number":66,"context_line":"                    if (luns[length-1] \u003d\u003d x) or (luns[x-1] + 1 !\u003d luns[x]):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_735e5615","line":63,"in_reply_to":"3a961159_5e8dbd29","updated":"2015-01-20 07:19:39.000000000","message":"This else condition written for  single-target and multi-lun case and  trying to get appropriate lun-number by this logic.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return 1"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        else:"},{"line_number":64,"context_line":"            for x in luns:"},{"line_number":65,"context_line":"                if x \u003c 256:"},{"line_number":66,"context_line":"                    if (luns[length-1] \u003d\u003d x) or (luns[x-1] + 1 !\u003d luns[x]):"},{"line_number":67,"context_line":"                        return x + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_be9a2160","line":64,"updated":"2015-01-13 05:14:35.000000000","message":"instead x, call this lun. x is not a helpful variable.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return 1"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        else:"},{"line_number":64,"context_line":"            for x in luns:"},{"line_number":65,"context_line":"                if x \u003c 256:"},{"line_number":66,"context_line":"                    if (luns[length-1] \u003d\u003d x) or (luns[x-1] + 1 !\u003d luns[x]):"},{"line_number":67,"context_line":"                        return x + 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_30f4c487","line":64,"in_reply_to":"3a961159_be9a2160","updated":"2015-01-20 07:19:39.000000000","message":"Will change x with some meaningful name like \u0027lun\u0027","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                    if (luns[length-1] \u003d\u003d x) or (luns[x-1] + 1 !\u003d luns[x]):"},{"line_number":67,"context_line":"                        return x + 1"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def create_iscsi_target(self, context, name, tid, lun, path,"},{"line_number":70,"context_line":"                            chap_auth\u003dNone, **kwargs):"},{"line_number":71,"context_line":"        vol_name \u003d path.split(\"/\")[3]"},{"line_number":72,"context_line":"        if self.target_name is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b9f4fbf1","line":69,"updated":"2015-01-13 05:14:35.000000000","message":"method sig shouldn\u0027t have context.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                    if (luns[length-1] \u003d\u003d x) or (luns[x-1] + 1 !\u003d luns[x]):"},{"line_number":67,"context_line":"                        return x + 1"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def create_iscsi_target(self, context, name, tid, lun, path,"},{"line_number":70,"context_line":"                            chap_auth\u003dNone, **kwargs):"},{"line_number":71,"context_line":"        vol_name \u003d path.split(\"/\")[3]"},{"line_number":72,"context_line":"        if self.target_name is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_130b5225","line":69,"in_reply_to":"3a961159_b9f4fbf1","updated":"2015-01-20 07:19:39.000000000","message":"Getting volume-id info, by calling volume database by sending context as one parameter (line 100).\nWe are trying to find alternate way to get volume-id info and will remove \u0027context\u0027 if it really unnecessary.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                       \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":77,"context_line":"                                       \u0027-attributes\u0027, \u0027enabled\u003d1\u0027,"},{"line_number":78,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":79,"context_line":"            LOG.debug(\"StdOut from scstadmin -set attribute : %s\", out)"},{"line_number":80,"context_line":"            LOG.debug(\"StdErr from scstadmin -set attribute: %s\", err)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            if self._get_target(name) is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_7e2c3902","line":79,"updated":"2015-01-13 05:14:35.000000000","message":"nit, remove space before colon.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                       \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":77,"context_line":"                                       \u0027-attributes\u0027, \u0027enabled\u003d1\u0027,"},{"line_number":78,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":79,"context_line":"            LOG.debug(\"StdOut from scstadmin -set attribute : %s\", out)"},{"line_number":80,"context_line":"            LOG.debug(\"StdErr from scstadmin -set attribute: %s\", err)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"            if self._get_target(name) is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_303be43a","line":79,"in_reply_to":"3a961159_7e2c3902","updated":"2015-01-20 07:19:39.000000000","message":"Will remove the space before colon.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                lun_no \u003d 1"},{"line_number":98,"context_line":"                disk_id \u003d tid"},{"line_number":99,"context_line":"            else:"},{"line_number":100,"context_line":"                volume_all \u003d self.db.volume_get_all("},{"line_number":101,"context_line":"                    context, None, None, \"id\", \"asc\", None)"},{"line_number":102,"context_line":"                lun_list \u003d []"},{"line_number":103,"context_line":"                for vol in volume_all:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_be0dc191","line":100,"updated":"2015-01-13 05:14:35.000000000","message":"I don\u0027t know why you\u0027re doing this, as there is no comment. The current approach however is a very bad idea. If there are over a million volumes in the system, you\u0027re going to slow things down and causing quite a bit of issues with the database with how often this will run. Please come up with another solution, as this is not acceptable.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                lun_no \u003d 1"},{"line_number":98,"context_line":"                disk_id \u003d tid"},{"line_number":99,"context_line":"            else:"},{"line_number":100,"context_line":"                volume_all \u003d self.db.volume_get_all("},{"line_number":101,"context_line":"                    context, None, None, \"id\", \"asc\", None)"},{"line_number":102,"context_line":"                lun_list \u003d []"},{"line_number":103,"context_line":"                for vol in volume_all:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_db2f3f88","line":100,"in_reply_to":"3a961159_be0dc191","updated":"2015-01-20 07:19:39.000000000","message":"We have implemented support for a target having multiple luns. While doing an attach for a new volume, we have to figure out the lun number to use for this volume. We try to figure it out by reading the existing lun numbers, and figuring out the next lun number to use. When we get a detach for a particular volume-id we would like to retrieve the corresponding lun number for this volume_id and use it in the scstadmin command to remove the lun from SCST.\nWe needed to maintain a mapping of volume-id to lun number somewhere and we used the database to save the mapping. \nBased on your feedback, we will use filter to retrieve the volumes.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":123,"context_line":"            LOG.debug(\"StdOut from scstadmin -add_lun: %s\", out)"},{"line_number":124,"context_line":"            LOG.debug(\"StdErr from scstadmin -add_lun: %s\", err)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            (out, err) \u003d self._execute(\u0027scstadmin\u0027,"},{"line_number":127,"context_line":"                                       \u0027-write_config\u0027,"},{"line_number":128,"context_line":"                                       \u0027/tmp/scst.conf\u0027, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_9e9d650d","line":125,"updated":"2015-01-13 05:14:35.000000000","message":"What is the point of this if it\u0027s going in /tmp? What if the file already exists?","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":123,"context_line":"            LOG.debug(\"StdOut from scstadmin -add_lun: %s\", out)"},{"line_number":124,"context_line":"            LOG.debug(\"StdErr from scstadmin -add_lun: %s\", err)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            (out, err) \u003d self._execute(\u0027scstadmin\u0027,"},{"line_number":127,"context_line":"                                       \u0027-write_config\u0027,"},{"line_number":128,"context_line":"                                       \u0027/tmp/scst.conf\u0027, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_8010e601","line":125,"in_reply_to":"3a961159_9e9d650d","updated":"2015-01-20 07:19:39.000000000","message":"We are changing it to /etc/scst.conf because this is the default location for this file where SCST driver will load this configuration from. If the file already exists, the new configuration changes gets appended to this file(for creation), and configuration changes gets removed from this file(for deletions).","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                       \u0027/tmp/scst.conf\u0027, run_as_root\u003dTrue)"},{"line_number":129,"context_line":"            LOG.debug(\"StdOut from scstadmin /tmp/scst.conf: %s\", out)"},{"line_number":130,"context_line":"            LOG.debug(\"StdErr from scstadmin /tmp/scst.conf: %s\", err)"},{"line_number":131,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":132,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        if self.target_name is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_7990d342","line":131,"updated":"2015-01-13 05:14:35.000000000","message":"e is unsed.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                                       \u0027/tmp/scst.conf\u0027, run_as_root\u003dTrue)"},{"line_number":129,"context_line":"            LOG.debug(\"StdOut from scstadmin /tmp/scst.conf: %s\", out)"},{"line_number":130,"context_line":"            LOG.debug(\"StdErr from scstadmin /tmp/scst.conf: %s\", err)"},{"line_number":131,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":132,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        if self.target_name is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_5038703b","line":131,"in_reply_to":"3a961159_7990d342","updated":"2015-01-20 07:19:39.000000000","message":"Will remove.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        if self.target_name is None:"},{"line_number":135,"context_line":"            return tid"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            return tid, lun_no"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _iscsi_location(self, ip, target, iqn, lun\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_5eba1d72","line":136,"updated":"2015-01-13 05:14:35.000000000","message":"We don\u0027t want to return something other than the target id. TGT and LIO are currently returning just the target id, so this would break the interface for iscsi helpers. Volume drivers that are using the iscsi_helpers expect just tid, not a tuple.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        if self.target_name is None:"},{"line_number":135,"context_line":"            return tid"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            return tid, lun_no"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def _iscsi_location(self, ip, target, iqn, lun\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_9b2057b3","line":136,"in_reply_to":"3a961159_5eba1d72","updated":"2015-01-20 07:19:39.000000000","message":"lun_no being returned to method \"create_export\" and lun_no  utilization by that method being limited to SCST file only.\nWe don\u0027t think returning of lun_no would  break  the interface for other iscsi_helpers like TGT and LIO.\nWe are returning lun_no and using that in single-target and  multi-lun case.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        return \"%s:%s,%s %s %s\" % (ip, self.configuration.iscsi_port,"},{"line_number":141,"context_line":"                                   target, iqn, lun)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def _get_iscsi_target(self, context, vol_id):"},{"line_number":144,"context_line":"        return 0"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_target_and_lun(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_fe6f49f8","line":143,"updated":"2015-01-13 05:14:35.000000000","message":"I don\u0027t get the point of this method. It\u0027s only called one place and the args are unused.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        return \"%s:%s,%s %s %s\" % (ip, self.configuration.iscsi_port,"},{"line_number":141,"context_line":"                                   target, iqn, lun)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def _get_iscsi_target(self, context, vol_id):"},{"line_number":144,"context_line":"        return 0"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_target_and_lun(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_5066b056","line":143,"in_reply_to":"3a961159_fe6f49f8","updated":"2015-01-20 07:19:39.000000000","message":"Will remove the unused arguments and will remove this function call if it really unnecessary.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def _get_iscsi_target(self, context, vol_id):"},{"line_number":144,"context_line":"        return 0"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_target_and_lun(self, context, volume):"},{"line_number":147,"context_line":"        lun \u003d 1"},{"line_number":148,"context_line":"        iscsi_target \u003d 0"},{"line_number":149,"context_line":"        return iscsi_target, lun"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_5e485d8a","line":146,"updated":"2015-01-13 05:14:35.000000000","message":"I don\u0027t get the point of this method either. It\u0027s only called one place and the args are unused.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def _get_iscsi_target(self, context, vol_id):"},{"line_number":144,"context_line":"        return 0"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _get_target_and_lun(self, context, volume):"},{"line_number":147,"context_line":"        lun \u003d 1"},{"line_number":148,"context_line":"        iscsi_target \u003d 0"},{"line_number":149,"context_line":"        return iscsi_target, lun"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_9070180a","line":146,"in_reply_to":"3a961159_5e485d8a","updated":"2015-01-20 07:19:39.000000000","message":"Will remove the unused arguments and will remove this function call if it really unnecessary.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        iscsi_target \u003d 0"},{"line_number":149,"context_line":"        return iscsi_target, lun"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _ensure_iscsi_targets(self, context, host):"},{"line_number":152,"context_line":"        host_iscsi_targets \u003d self.db.iscsi_target_count_by_host(context,"},{"line_number":153,"context_line":"                                                                host)"},{"line_number":154,"context_line":"        if host_iscsi_targets \u003e\u003d self.configuration.iscsi_num_targets:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_59fdd707","line":151,"updated":"2015-01-13 05:14:35.000000000","message":"This method never gets used.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        iscsi_target \u003d 0"},{"line_number":149,"context_line":"        return iscsi_target, lun"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _ensure_iscsi_targets(self, context, host):"},{"line_number":152,"context_line":"        host_iscsi_targets \u003d self.db.iscsi_target_count_by_host(context,"},{"line_number":153,"context_line":"                                                                host)"},{"line_number":154,"context_line":"        if host_iscsi_targets \u003e\u003d self.configuration.iscsi_num_targets:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_504dd0c4","line":151,"in_reply_to":"3a961159_59fdd707","updated":"2015-01-20 07:19:39.000000000","message":"Will remove this method.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            target \u003d {\u0027host\u0027: host, \u0027target_num\u0027: target_num}"},{"line_number":160,"context_line":"            self.db.iscsi_target_create_safe(context, target)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _get_target_chap_auth(self, name):"},{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def ensure_export(self, context, volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_7900d300","line":162,"updated":"2015-01-13 05:14:35.000000000","message":"This method never gets used.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            target \u003d {\u0027host\u0027: host, \u0027target_num\u0027: target_num}"},{"line_number":160,"context_line":"            self.db.iscsi_target_create_safe(context, target)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _get_target_chap_auth(self, name):"},{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def ensure_export(self, context, volume,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_904738a3","line":162,"in_reply_to":"3a961159_7900d300","updated":"2015-01-20 07:19:39.000000000","message":"Will remove this method.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def _get_target_chap_auth(self, name):"},{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def ensure_export(self, context, volume,"},{"line_number":166,"context_line":"                      iscsi_name, volume_path,"},{"line_number":167,"context_line":"                      volume_group, config):"},{"line_number":168,"context_line":"        chap_auth \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_19498f60","line":165,"updated":"2015-01-13 05:14:35.000000000","message":"method sig should be self, context, volume, volume_path.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def _get_target_chap_auth(self, name):"},{"line_number":163,"context_line":"        return None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def ensure_export(self, context, volume,"},{"line_number":166,"context_line":"                      iscsi_name, volume_path,"},{"line_number":167,"context_line":"                      volume_group, config):"},{"line_number":168,"context_line":"        chap_auth \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_f0407c61","line":165,"in_reply_to":"3a961159_19498f60","updated":"2015-01-20 07:19:39.000000000","message":"Will change according to your feedback.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        iscsi_name \u003d \"%s%s\" % (self.configuration.iscsi_target_prefix,"},{"line_number":172,"context_line":"                               volume[\u0027name\u0027])"},{"line_number":173,"context_line":"        self.create_iscsi_target(context, scsi_name, 1, 0, volume_path,"},{"line_number":174,"context_line":"                                 chap_auth, check_exit_code\u003dFalse,"},{"line_number":175,"context_line":"                                 old_name\u003dold_name)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b9b15be2","line":173,"updated":"2015-01-13 05:14:35.000000000","message":"scsi_name here should be iscsi_name","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        iscsi_name \u003d \"%s%s\" % (self.configuration.iscsi_target_prefix,"},{"line_number":172,"context_line":"                               volume[\u0027name\u0027])"},{"line_number":173,"context_line":"        self.create_iscsi_target(context, scsi_name, 1, 0, volume_path,"},{"line_number":174,"context_line":"                                 chap_auth, check_exit_code\u003dFalse,"},{"line_number":175,"context_line":"                                 old_name\u003dold_name)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b0cc34c0","line":173,"in_reply_to":"3a961159_b9b15be2","updated":"2015-01-20 07:19:39.000000000","message":"We will change it.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            chap_username \u003d vutils.generate_username()"},{"line_number":190,"context_line":"            chap_password \u003d vutils.generate_password()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            chap_username \u003d \"EmulexTgt\""},{"line_number":194,"context_line":"            chap_password \u003d \"ElxTgtPassword\""},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_1ec6d568","line":192,"updated":"2015-01-13 05:14:35.000000000","message":"This shouldn\u0027t be hardcoded.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            chap_username \u003d vutils.generate_username()"},{"line_number":190,"context_line":"            chap_password \u003d vutils.generate_password()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            chap_username \u003d \"EmulexTgt\""},{"line_number":194,"context_line":"            chap_password \u003d \"ElxTgtPassword\""},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_70e1ec9a","line":192,"in_reply_to":"3a961159_1ec6d568","updated":"2015-01-20 07:19:39.000000000","message":"Will send the Chap strings using configuration file and use those variables here.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            iscsi_target \u003d self._get_iscsi_target(context, volume[\u0027id\u0027])"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        except exception.NotFound:"},{"line_number":218,"context_line":"            LOG.info(_LI(\"Skipping remove_export. No iscsi_target \""},{"line_number":219,"context_line":"                         \"provisioned for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":220,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_99dbbf4e","line":217,"updated":"2015-01-13 05:14:35.000000000","message":"This method only returns 0, so no need to catch this exception.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            iscsi_target \u003d self._get_iscsi_target(context, volume[\u0027id\u0027])"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        except exception.NotFound:"},{"line_number":218,"context_line":"            LOG.info(_LI(\"Skipping remove_export. No iscsi_target \""},{"line_number":219,"context_line":"                         \"provisioned for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":220,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d0ef0085","line":217,"in_reply_to":"3a961159_99dbbf4e","updated":"2015-01-20 07:19:39.000000000","message":"Will fix this.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        self.remove_iscsi_target(context, iscsi_target, 0,"},{"line_number":234,"context_line":"                                 volume[\u0027id\u0027], volume[\u0027name\u0027])"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def remove_iscsi_target(self, context, tid,"},{"line_number":237,"context_line":"                            lun, vol_id, vol_name, **kwargs):"},{"line_number":238,"context_line":"        vol_uuid_file \u003d vol_name"},{"line_number":239,"context_line":"        if self.target_name is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_f9df6336","line":236,"updated":"2015-01-13 05:14:35.000000000","message":"remove context from the method sig.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        self.remove_iscsi_target(context, iscsi_target, 0,"},{"line_number":234,"context_line":"                                 volume[\u0027id\u0027], volume[\u0027name\u0027])"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def remove_iscsi_target(self, context, tid,"},{"line_number":237,"context_line":"                            lun, vol_id, vol_name, **kwargs):"},{"line_number":238,"context_line":"        vol_uuid_file \u003d vol_name"},{"line_number":239,"context_line":"        if self.target_name is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_3073e4e9","line":236,"in_reply_to":"3a961159_f9df6336","updated":"2015-01-20 07:19:39.000000000","message":"In line number 258, We are calling the method self.db.volume_get() by sending \"context\" as one parameter.\nAdvice us, is there any alternate way to call that method without sending \u0027context\u0027 as argument.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        LOG.debug(\"StdOut from scstadmin /tmp/scst.conf: %s\", out)"},{"line_number":283,"context_line":"        LOG.debug(\"StdErr from scstadmin /tmp/scst.conf: %s\", err)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def show_target(self, tid, iqn\u003dNone, **kwargs):"},{"line_number":286,"context_line":"        if iqn is None:"},{"line_number":287,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":288,"context_line":"                err\u003d_(\u0027valid iqn needed for show_target\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_39980b75","line":285,"updated":"2015-01-13 05:14:35.000000000","message":"There is no reason to default to None here. Also kwargs is unsed.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        LOG.debug(\"StdOut from scstadmin /tmp/scst.conf: %s\", out)"},{"line_number":283,"context_line":"        LOG.debug(\"StdErr from scstadmin /tmp/scst.conf: %s\", err)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def show_target(self, tid, iqn\u003dNone, **kwargs):"},{"line_number":286,"context_line":"        if iqn is None:"},{"line_number":287,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":288,"context_line":"                err\u003d_(\u0027valid iqn needed for show_target\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_90f57853","line":285,"in_reply_to":"3a961159_39980b75","updated":"2015-01-20 07:19:39.000000000","message":"Will fix this.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"c2f98c15448e63ab677fafd511244ec10501590d","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        if tid is None:"},{"line_number":292,"context_line":"            raise exception.NotFound()"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":295,"context_line":"        iscsi_properties \u003d self._get_iscsi_properties(volume)"},{"line_number":296,"context_line":"        return {"},{"line_number":297,"context_line":"            \u0027driver_volume_type\u0027: \u0027iscsi\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_d9cb8771","line":294,"updated":"2015-01-13 05:14:35.000000000","message":"No need to define this. This does exactly as the parent class.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"19a971e967f84e381b1e90a58549fa447781f97a","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        if tid is None:"},{"line_number":292,"context_line":"            raise exception.NotFound()"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":295,"context_line":"        iscsi_properties \u003d self._get_iscsi_properties(volume)"},{"line_number":296,"context_line":"        return {"},{"line_number":297,"context_line":"            \u0027driver_volume_type\u0027: \u0027iscsi\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_b09194f9","line":294,"in_reply_to":"3a961159_d9cb8771","updated":"2015-01-20 07:19:39.000000000","message":"Will remove this method.","commit_id":"eabe2750aaae47555aeeea618ebb70ebba3d11b8"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        for line in lines:"},{"line_number":41,"context_line":"            # Searching for \"iqn\" either as string or sub-string"},{"line_number":42,"context_line":"            if iqn in line:"},{"line_number":43,"context_line":"                return self._target_attribute(iqn)"},{"line_number":44,"context_line":"        return None"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _target_attribute(self, iqn):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_4c2629bc","line":43,"updated":"2015-01-21 11:32:37.000000000","message":"I think the above 5 lines could be simplified to:\n\nif iqn in out:\n    return self._target_attribute(iqn)","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                context, None, None, \"id\", \"asc\", filters)"},{"line_number":65,"context_line":"            luns \u003d []"},{"line_number":66,"context_line":"            for vol in volume_all:"},{"line_number":67,"context_line":"                LOG.info(\u0027provider location %s\u0027 % vol[\u0027provider_location\u0027])"},{"line_number":68,"context_line":"                luns.append(int(\"\".join("},{"line_number":69,"context_line":"                    vol[\u0027provider_location\u0027].split(\" \")[-1:])))"},{"line_number":70,"context_line":"        luns \u003d sorted(set(luns))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_8c41f10d","line":67,"updated":"2015-01-21 11:32:37.000000000","message":"I believe this should be:\n\nLOG.info(_LI(\u0027provider location %s\u0027), vol[\u0027provider_location\u0027])\n\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                luns.append(int(\"\".join("},{"line_number":69,"context_line":"                    vol[\u0027provider_location\u0027].split(\" \")[-1:])))"},{"line_number":70,"context_line":"        luns \u003d sorted(set(luns))"},{"line_number":71,"context_line":"        length \u003d len(luns)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if (length \u003d\u003d 0) or (luns[0] !\u003d 1):"},{"line_number":74,"context_line":"            lun \u003d 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_6c94c537","line":71,"updated":"2015-01-21 11:32:37.000000000","message":"You don\u0027t need the length","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        luns \u003d sorted(set(luns))"},{"line_number":71,"context_line":"        length \u003d len(luns)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if (length \u003d\u003d 0) or (luns[0] !\u003d 1):"},{"line_number":74,"context_line":"            lun \u003d 1"},{"line_number":75,"context_line":"            return iscsi_target, lun"},{"line_number":76,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_ecc6f548","line":73,"updated":"2015-01-21 11:32:37.000000000","message":"if not luns or luns[0] !\u003d 1:","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            for lun in luns:"},{"line_number":78,"context_line":"                if lun \u003c 256:"},{"line_number":79,"context_line":"                    if (luns[length - 1] \u003d\u003d lun) or (luns[lun - 1] + 1"},{"line_number":80,"context_line":"                                                     !\u003d luns[lun]):"},{"line_number":81,"context_line":"                        return iscsi_target, (lun + 1)"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_cc3e9929","line":79,"updated":"2015-01-21 11:32:37.000000000","message":"if luns[-1] \u003d\u003d lun or ...","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":237,"context_line":"            LOG.debug(\"StdErr from scstadmin /etc/scst.conf: %s\", err)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":240,"context_line":"            LOG.error(_(\"Failed to remove iscsi target for volume \""},{"line_number":241,"context_line":"                        \"id:%(vol_id)s: %(e)s\")"},{"line_number":242,"context_line":"                      % {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":243,"context_line":"            raise exception.ISCSITargetRemoveFailed(volume_id\u003dvol_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_17550ac6","line":240,"updated":"2015-01-21 11:32:37.000000000","message":"LOG.error(_LE(\"Failed to remove iscsi target for volume \"\n\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"095e7f72f32c9c8f5efff51e5e98da701c086649","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":240,"context_line":"            LOG.error(_(\"Failed to remove iscsi target for volume \""},{"line_number":241,"context_line":"                        \"id:%(vol_id)s: %(e)s\")"},{"line_number":242,"context_line":"                      % {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":243,"context_line":"            raise exception.ISCSITargetRemoveFailed(volume_id\u003dvol_id)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def show_target(self, tid, iqn):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_d74aa226","line":242,"updated":"2015-01-21 11:32:37.000000000","message":", {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})\n\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"1bdd54dafee771ede8dd47b4aa12061ab65fbcca"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"001a47a3bf45185178b892711151236f520f230e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            LOG.debug(\"StdOut from scstadmin /etc/scst.conf: %s\", out)"},{"line_number":131,"context_line":"            LOG.debug(\"StdErr from scstadmin /etc/scst.conf: %s\", err)"},{"line_number":132,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":133,"context_line":"            LOG.warning(_LW(\"Failed to create iscsi target for volume \""},{"line_number":134,"context_line":"                        \"id:%(vol_name)s: %(e)s\")"},{"line_number":135,"context_line":"                        % {\u0027vol_name\u0027: vol_name, \u0027e\u0027: e})"},{"line_number":136,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa81d914_83033041","line":133,"updated":"2015-01-29 14:22:40.000000000","message":"Might be better a LOG.error()?","commit_id":"7228d25c8d194ebc9d86429a44bc7359e974d40e"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d831fc1b57d407a10c053805c4d3295eadd64661","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        if self.target_name is None:"},{"line_number":57,"context_line":"            lun \u003d 1"},{"line_number":58,"context_line":"            return iscsi_target, lun"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            filters \u003d {\u0027host\u0027: volume[\u0027host\u0027], \u0027status\u0027: \u0027in-use\u0027}"},{"line_number":61,"context_line":"            volume_all \u003d self.db.volume_get_all("},{"line_number":62,"context_line":"                context, None, None, \"id\", \"asc\", filters)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_684bbf59","line":59,"updated":"2015-02-02 06:35:58.000000000","message":"As mentioned in patch set 1, this else is still not needed. You return if you go through the if condition.","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"34ffc2eea5d6210b1c928b3fc636a7e4069c10ce","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        if self.target_name is None:"},{"line_number":57,"context_line":"            lun \u003d 1"},{"line_number":58,"context_line":"            return iscsi_target, lun"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            filters \u003d {\u0027host\u0027: volume[\u0027host\u0027], \u0027status\u0027: \u0027in-use\u0027}"},{"line_number":61,"context_line":"            volume_all \u003d self.db.volume_get_all("},{"line_number":62,"context_line":"                context, None, None, \"id\", \"asc\", filters)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_021217b1","line":59,"in_reply_to":"da86d52c_684bbf59","updated":"2015-02-02 12:02:52.000000000","message":"Thanks. We removed the else statement.","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d831fc1b57d407a10c053805c4d3295eadd64661","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            for lun in luns:"},{"line_number":74,"context_line":"                if lun \u003c 256:"},{"line_number":75,"context_line":"                    if (luns[-1] \u003d\u003d lun) or (luns[lun - 1] + 1 !\u003d luns[lun]):"},{"line_number":76,"context_line":"                        return iscsi_target, (lun + 1)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def create_iscsi_target(self, name, tid, lun, path,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_28f9c7c8","line":75,"updated":"2015-02-02 06:35:58.000000000","message":"What if there are multiple volume drivers setup on the same host using SCST. This lun counting seems to be under the assumption of the limitation of only one volume driver using SCST on the volume\u0027s host.","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"34ffc2eea5d6210b1c928b3fc636a7e4069c10ce","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            for lun in luns:"},{"line_number":74,"context_line":"                if lun \u003c 256:"},{"line_number":75,"context_line":"                    if (luns[-1] \u003d\u003d lun) or (luns[lun - 1] + 1 !\u003d luns[lun]):"},{"line_number":76,"context_line":"                        return iscsi_target, (lun + 1)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def create_iscsi_target(self, name, tid, lun, path,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_22263b17","line":75,"in_reply_to":"da86d52c_28f9c7c8","updated":"2015-02-02 12:02:52.000000000","message":"We are adding another filter to check for target name with in the host, while getting the lun numbers.We also removed the check for 256.","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d831fc1b57d407a10c053805c4d3295eadd64661","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                 old_name\u003dold_name)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        \"\"\"Creates an export for a logical volume.\"\"\""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        iscsi_target, lun \u003d self._get_target_and_lun(context, volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_681d7f66","line":155,"updated":"2015-02-02 06:35:58.000000000","message":"remove this line","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"34ffc2eea5d6210b1c928b3fc636a7e4069c10ce","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                 old_name\u003dold_name)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def create_export(self, context, volume, volume_path):"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        \"\"\"Creates an export for a logical volume.\"\"\""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        iscsi_target, lun \u003d self._get_target_and_lun(context, volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_a2794bfe","line":155,"in_reply_to":"da86d52c_681d7f66","updated":"2015-02-02 12:02:52.000000000","message":"Done.","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d831fc1b57d407a10c053805c4d3295eadd64661","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            chap_username \u003d vutils.generate_username()"},{"line_number":167,"context_line":"            chap_password \u003d vutils.generate_password()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        else:"},{"line_number":170,"context_line":"            chap_username \u003d self.chap_username"},{"line_number":171,"context_line":"            chap_password \u003d self.chap_password"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_0804037a","line":169,"updated":"2015-02-02 06:35:58.000000000","message":"Why does chap have to be set via configuration for target drivers other than ISCSI?","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"34ffc2eea5d6210b1c928b3fc636a7e4069c10ce","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            chap_username \u003d vutils.generate_username()"},{"line_number":167,"context_line":"            chap_password \u003d vutils.generate_password()"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        else:"},{"line_number":170,"context_line":"            chap_username \u003d self.chap_username"},{"line_number":171,"context_line":"            chap_password \u003d self.chap_password"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_821d27c0","line":169,"in_reply_to":"da86d52c_0804037a","updated":"2015-02-02 12:02:52.000000000","message":"You are correct, we have changed the logic now. If the user has defined a username and password in the configuration file, the code will use it for CHAP authentication, else the code will generate a username and password.","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"d831fc1b57d407a10c053805c4d3295eadd64661","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            iscsi_target \u003d self._get_target(iqn)"},{"line_number":191,"context_line":"            self.show_target(iscsi_target, iqn)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        except Exception:"},{"line_number":194,"context_line":"            LOG.info(_LI(\"Skipping remove_export. No iscsi_target \""},{"line_number":195,"context_line":"                         \"is presently exported for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":196,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_28e70714","line":193,"updated":"2015-02-02 06:35:58.000000000","message":"Since the only thing you\u0027re doing in _get_target() is a utils.execute() call, you shouldn\u0027t catch a broad Exception. Instead catch putils.ProcessExecutionError","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"34ffc2eea5d6210b1c928b3fc636a7e4069c10ce","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            iscsi_target \u003d self._get_target(iqn)"},{"line_number":191,"context_line":"            self.show_target(iscsi_target, iqn)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        except Exception:"},{"line_number":194,"context_line":"            LOG.info(_LI(\"Skipping remove_export. No iscsi_target \""},{"line_number":195,"context_line":"                         \"is presently exported for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":196,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_e28343ca","line":193,"in_reply_to":"da86d52c_28e70714","updated":"2015-02-02 12:02:52.000000000","message":"Updated with putils.ProcessExecutionError","commit_id":"61b6ef34f7333c597895d888821bbbcdf03eae30"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"e793feb2f0d50fd6d2fbaf4f1faa141b9094d03b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            lun \u003d 1"},{"line_number":58,"context_line":"            return iscsi_target, lun"},{"line_number":59,"context_line":"        filters \u003d {\u0027host\u0027: volume[\u0027host\u0027], \u0027status\u0027: \u0027in-use\u0027}"},{"line_number":60,"context_line":"        volume_all \u003d self.db.volume_get_all("},{"line_number":61,"context_line":"            context, None, None, \"id\", \"asc\", filters)"},{"line_number":62,"context_line":"        luns \u003d []"},{"line_number":63,"context_line":"        for vol in volume_all:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_5a614138","line":60,"updated":"2015-02-02 18:38:05.000000000","message":"I\u0027m really not a fan of doing db calls in the driver; and I\u0027m also not crazy at all about doing a get_all volumes and interating like this.\n\nif we need to put the targets table back in to the db (and we do IMO) then we should do so and use that for this unique case.\n\nAlso, I have to think there\u0027s a better more robust way to get the list of currently used targets/luns from scst other than this hacky iteration through the attached items.  Which by the way, you don\u0027t need to get all volumes, only those that are attached.","commit_id":"512887709dcf4a301e42442077c3f1d119245ed5"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"5e41740e218ae7ea98ec74a6fad3625cb7f1f81b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            lun \u003d 1"},{"line_number":58,"context_line":"            return iscsi_target, lun"},{"line_number":59,"context_line":"        filters \u003d {\u0027host\u0027: volume[\u0027host\u0027], \u0027status\u0027: \u0027in-use\u0027}"},{"line_number":60,"context_line":"        volume_all \u003d self.db.volume_get_all("},{"line_number":61,"context_line":"            context, None, None, \"id\", \"asc\", filters)"},{"line_number":62,"context_line":"        luns \u003d []"},{"line_number":63,"context_line":"        for vol in volume_all:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_2c0ef234","line":60,"in_reply_to":"da86d52c_5a614138","updated":"2015-02-03 14:23:51.000000000","message":"We have investigated a mechanism to get the currently used targets/luns list from SCST. We are modifying the code to use this mechanism to figure out the lun number to use in \"multiple luns per target\" case, and removing the previous mechanism of using the database.\nWe are currently performing tests and we will be uploading the patch in a few hours with this new mechanism.","commit_id":"512887709dcf4a301e42442077c3f1d119245ed5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"49a1e5a179feef1db1df0d62a82832f7eb4220b6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ScstAdm(iscsi.ISCSITarget):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":28,"context_line":"        super(ScstAdm, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6b64cbb8","line":25,"updated":"2015-02-06 09:53:05.000000000","message":"SCST..\n\nhttps://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ScstAdm(iscsi.ISCSITarget):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":28,"context_line":"        super(ScstAdm, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_eef609d6","line":25,"in_reply_to":"da86d52c_6b64cbb8","updated":"2015-02-06 10:29:11.000000000","message":"We will change to SCSTAdm and all other places where it is used.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"005e3da5700b671fa424911a45c99bf3409afc96","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.iscsi_target_prefix \u003d self.configuration.safe_get("},{"line_number":31,"context_line":"            \u0027iscsi_target_prefix\u0027)"},{"line_number":32,"context_line":"        self.target_name \u003d self.configuration.safe_get(\u0027scst_target_iqn_name\u0027)"},{"line_number":33,"context_line":"        self.target_driver \u003d self.configuration.safe_get(\u0027scst_target_driver\u0027)"},{"line_number":34,"context_line":"        self.chap_username \u003d self.configuration.safe_get(\u0027chap_username\u0027)"},{"line_number":35,"context_line":"        self.chap_password \u003d self.configuration.safe_get(\u0027chap_password\u0027)"},{"line_number":36,"context_line":"        self.initiator_iqn \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_1c756031","line":33,"updated":"2015-02-06 05:33:38.000000000","message":"Since there are fc target drivers supported by scst, I think the value set here needs to be restricted to what the ISCSITarget class allows","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"cc8bbec69209a461257b84fb7bef7d220878d4e5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.iscsi_target_prefix \u003d self.configuration.safe_get("},{"line_number":31,"context_line":"            \u0027iscsi_target_prefix\u0027)"},{"line_number":32,"context_line":"        self.target_name \u003d self.configuration.safe_get(\u0027scst_target_iqn_name\u0027)"},{"line_number":33,"context_line":"        self.target_driver \u003d self.configuration.safe_get(\u0027scst_target_driver\u0027)"},{"line_number":34,"context_line":"        self.chap_username \u003d self.configuration.safe_get(\u0027chap_username\u0027)"},{"line_number":35,"context_line":"        self.chap_password \u003d self.configuration.safe_get(\u0027chap_password\u0027)"},{"line_number":36,"context_line":"        self.initiator_iqn \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_75bf4f61","line":33,"in_reply_to":"da86d52c_1c756031","updated":"2015-02-06 08:06:02.000000000","message":"Yes. This implementation supports only ISCSI. Currently only ISCSI SCST driver can be specified in this parameter. But in future, this parameter can be used to specify FC driver. Can you give us suggestions if you would like us to add some code changes here to provide restriction.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.iscsi_target_prefix \u003d self.configuration.safe_get("},{"line_number":31,"context_line":"            \u0027iscsi_target_prefix\u0027)"},{"line_number":32,"context_line":"        self.target_name \u003d self.configuration.safe_get(\u0027scst_target_iqn_name\u0027)"},{"line_number":33,"context_line":"        self.target_driver \u003d self.configuration.safe_get(\u0027scst_target_driver\u0027)"},{"line_number":34,"context_line":"        self.chap_username \u003d self.configuration.safe_get(\u0027chap_username\u0027)"},{"line_number":35,"context_line":"        self.chap_password \u003d self.configuration.safe_get(\u0027chap_password\u0027)"},{"line_number":36,"context_line":"        self.initiator_iqn \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_cb2777c8","line":33,"in_reply_to":"da86d52c_2bebb3dc","updated":"2015-02-06 10:29:11.000000000","message":"Anish, When we install the SCST package, the default iscsi target driver that comes is the iscsi (the name of the driver is iscsi) driver. In all scstadmin commands, this driver is specified as an input parameter (for e.g, scstadmin -add_lun 2 -driver iscsi ...). \nBut vendors like Emulex have a hardware SCST adapter that has its own SCST target driver (ocs_xe100). So the scstadmin command would need to be \"scstadmin -add_lun 2 -driver ocs_xe100...\" in this setup.\nIn order to provide the correct driver name to use in the scstadmin command, we are using the \"scst_target_driver\" in cinder.conf to specify the scst target driver currently setup in the target machine.\nSo, in the setup where an Emulex HBA is configured to provide SCST hardware target support using the ocs_xe100 scst driver, we will specify \"scst_target_driver \u003d ocs_xe100\" in cinder.conf file.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"1158685f3a8cac836a6bf727acac6c5a6432241a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.iscsi_target_prefix \u003d self.configuration.safe_get("},{"line_number":31,"context_line":"            \u0027iscsi_target_prefix\u0027)"},{"line_number":32,"context_line":"        self.target_name \u003d self.configuration.safe_get(\u0027scst_target_iqn_name\u0027)"},{"line_number":33,"context_line":"        self.target_driver \u003d self.configuration.safe_get(\u0027scst_target_driver\u0027)"},{"line_number":34,"context_line":"        self.chap_username \u003d self.configuration.safe_get(\u0027chap_username\u0027)"},{"line_number":35,"context_line":"        self.chap_password \u003d self.configuration.safe_get(\u0027chap_password\u0027)"},{"line_number":36,"context_line":"        self.initiator_iqn \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2bebb3dc","line":33,"in_reply_to":"da86d52c_75bf4f61","updated":"2015-02-06 09:42:18.000000000","message":"I think if you are only allowing iscsi right now, you should not have this parameter enabled, leave it for later when someone wants to support more target drivers. I was under the assumption you would support iscsi+iser, is this not the case ?","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"49a1e5a179feef1db1df0d62a82832f7eb4220b6","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":49,"context_line":"        self.remove_initiator_iqn \u003d connector[\u0027initiator\u0027]"},{"line_number":50,"context_line":"        pass"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _get_target(self, iqn):"},{"line_number":53,"context_line":"        (out, _err) \u003d utils.execute(\u0027scstadmin\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_8b0e5fe3","line":50,"updated":"2015-02-06 09:53:05.000000000","message":"You can remove this.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":49,"context_line":"        self.remove_initiator_iqn \u003d connector[\u0027initiator\u0027]"},{"line_number":50,"context_line":"        pass"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _get_target(self, iqn):"},{"line_number":53,"context_line":"        (out, _err) \u003d utils.execute(\u0027scstadmin\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_8e258d5d","line":50,"in_reply_to":"da86d52c_8b0e5fe3","updated":"2015-02-06 10:29:11.000000000","message":"Will remove.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"49a1e5a179feef1db1df0d62a82832f7eb4220b6","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        scst_group \u003d self.initiator_iqn"},{"line_number":115,"context_line":"        vol_name \u003d path.split(\"/\")[3]"},{"line_number":116,"context_line":"        if self.target_name is not None:"},{"line_number":117,"context_line":"            name \u003d self.target_name"},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            (out, err) \u003d utils.execute(\u0027scstadmin\u0027, \u0027-noprompt\u0027,"},{"line_number":120,"context_line":"                                       \u0027-set_drv_attr\u0027, self.target_driver,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6ba76bbd","line":117,"updated":"2015-02-06 09:53:05.000000000","message":"Try not to modify function input param.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        scst_group \u003d self.initiator_iqn"},{"line_number":115,"context_line":"        vol_name \u003d path.split(\"/\")[3]"},{"line_number":116,"context_line":"        if self.target_name is not None:"},{"line_number":117,"context_line":"            name \u003d self.target_name"},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            (out, err) \u003d utils.execute(\u0027scstadmin\u0027, \u0027-noprompt\u0027,"},{"line_number":120,"context_line":"                                       \u0027-set_drv_attr\u0027, self.target_driver,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_ee236902","line":117,"in_reply_to":"da86d52c_6ba76bbd","updated":"2015-02-06 10:29:11.000000000","message":"Vipin, we actually don\u0027t need these 2 lines since this check is happening in the place where this function is called from. we are passing in the correct \"name\".\nWill remove these 2 lines.\nif self.target_name is not None:\n            name \u003d self.target_name","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"49a1e5a179feef1db1df0d62a82832f7eb4220b6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                       \u0027-attributes\u0027, \u0027enabled\u003d1\u0027,"},{"line_number":122,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":123,"context_line":"            LOG.debug(\"StdOut from scstadmin -set attribute: %s\", out)"},{"line_number":124,"context_line":"            LOG.debug(\"StdErr from scstadmin -set attribute: %s\", err)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            if self._get_target(name) is None:"},{"line_number":127,"context_line":"                (out, err) \u003d utils.execute(\u0027scstadmin\u0027, \u0027-add_target\u0027, name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_4b15479a","line":124,"updated":"2015-02-06 09:53:05.000000000","message":"If there is an error, do we need to proceed further?\nAlso, can we log this conditionally?","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                       \u0027-attributes\u0027, \u0027enabled\u003d1\u0027,"},{"line_number":122,"context_line":"                                       run_as_root\u003dTrue)"},{"line_number":123,"context_line":"            LOG.debug(\"StdOut from scstadmin -set attribute: %s\", out)"},{"line_number":124,"context_line":"            LOG.debug(\"StdErr from scstadmin -set attribute: %s\", err)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            if self._get_target(name) is None:"},{"line_number":127,"context_line":"                (out, err) \u003d utils.execute(\u0027scstadmin\u0027, \u0027-add_target\u0027, name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_b10b9622","line":124,"in_reply_to":"da86d52c_4b15479a","updated":"2015-02-06 10:29:11.000000000","message":"We will optimize this code.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"005e3da5700b671fa424911a45c99bf3409afc96","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                                           \u0027-add_init\u0027, self.initiator_iqn,"},{"line_number":151,"context_line":"                                           \u0027-driver\u0027, self.target_driver,"},{"line_number":152,"context_line":"                                           \u0027-target\u0027, name,"},{"line_number":153,"context_line":"                                           \u0027-group\u0027, scst_group,"},{"line_number":154,"context_line":"                                           run_as_root\u003dTrue)"},{"line_number":155,"context_line":"                LOG.debug(\"StdOut from scstadmin -add_target: %s\", out)"},{"line_number":156,"context_line":"                LOG.debug(\"StdErr from scstadmin -add_target: %s\", err)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_dc4108aa","line":153,"updated":"2015-02-06 05:33:38.000000000","message":"Is it not possible to use a default group, or append to a list of arguments passed to execute than having the same statements repeated with an if/else everywhere ?","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"1158685f3a8cac836a6bf727acac6c5a6432241a","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                                           \u0027-add_init\u0027, self.initiator_iqn,"},{"line_number":151,"context_line":"                                           \u0027-driver\u0027, self.target_driver,"},{"line_number":152,"context_line":"                                           \u0027-target\u0027, name,"},{"line_number":153,"context_line":"                                           \u0027-group\u0027, scst_group,"},{"line_number":154,"context_line":"                                           run_as_root\u003dTrue)"},{"line_number":155,"context_line":"                LOG.debug(\"StdOut from scstadmin -add_target: %s\", out)"},{"line_number":156,"context_line":"                LOG.debug(\"StdErr from scstadmin -add_target: %s\", err)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6bc04b50","line":153,"in_reply_to":"da86d52c_502ed98c","updated":"2015-02-06 09:42:18.000000000","message":"Sounds good.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"cc8bbec69209a461257b84fb7bef7d220878d4e5","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                                           \u0027-add_init\u0027, self.initiator_iqn,"},{"line_number":151,"context_line":"                                           \u0027-driver\u0027, self.target_driver,"},{"line_number":152,"context_line":"                                           \u0027-target\u0027, name,"},{"line_number":153,"context_line":"                                           \u0027-group\u0027, scst_group,"},{"line_number":154,"context_line":"                                           run_as_root\u003dTrue)"},{"line_number":155,"context_line":"                LOG.debug(\"StdOut from scstadmin -add_target: %s\", out)"},{"line_number":156,"context_line":"                LOG.debug(\"StdErr from scstadmin -add_target: %s\", err)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_502ed98c","line":153,"in_reply_to":"da86d52c_dc4108aa","updated":"2015-02-06 08:06:02.000000000","message":"We will optimize the code to minimize sending the same parameters. The required additional parameters will only be passed which will get appended when the scstadmin call is being made.\nWe want to use the scst_group (initialized with the incoming initiator IQN name) variable to create separate groups for separate initiators. The LUN numbers will be maintained on a per initiator basis.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"49a1e5a179feef1db1df0d62a82832f7eb4220b6","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            LOG.debug(\"StdOut from scstadmin /etc/scst.conf: %s\", out)"},{"line_number":195,"context_line":"            LOG.debug(\"StdErr from scstadmin /etc/scst.conf: %s\", err)"},{"line_number":196,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":197,"context_line":"            LOG.warning(_LW(\"Failed to create iscsi target for volume \""},{"line_number":198,"context_line":"                        \"id:%(vol_name)s: %(e)s\")"},{"line_number":199,"context_line":"                        % {\u0027vol_name\u0027: vol_name, \u0027e\u0027: e})"},{"line_number":200,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_ab5c037e","line":197,"updated":"2015-02-06 09:53:05.000000000","message":"The log level should be exception/error.\nLOG.exception(_(\"Failed to create iscsi target for volume: %s\"), vol_name)\n\nFor warn, you can include the stack trace by:\nLOG.warning(_LW(\"\"), args, exc_info\u003dTrue)\n\nAlso use comma instead of %.\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html#adding-variables-to-log-messages","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            LOG.debug(\"StdOut from scstadmin /etc/scst.conf: %s\", out)"},{"line_number":195,"context_line":"            LOG.debug(\"StdErr from scstadmin /etc/scst.conf: %s\", err)"},{"line_number":196,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":197,"context_line":"            LOG.warning(_LW(\"Failed to create iscsi target for volume \""},{"line_number":198,"context_line":"                        \"id:%(vol_name)s: %(e)s\")"},{"line_number":199,"context_line":"                        % {\u0027vol_name\u0027: vol_name, \u0027e\u0027: e})"},{"line_number":200,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6ec219ea","line":197,"in_reply_to":"da86d52c_ab5c037e","updated":"2015-02-06 10:29:11.000000000","message":"Will change per your suggestion.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"49a1e5a179feef1db1df0d62a82832f7eb4220b6","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":306,"context_line":"            LOG.error(_LE(\"Failed to remove iscsi target for volume \""},{"line_number":307,"context_line":"                          \"id:%(vol_id)s: %(e)s\")"},{"line_number":308,"context_line":"                      % {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":309,"context_line":"            raise exception.ISCSITargetRemoveFailed(volume_id\u003dvol_id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def show_target(self, tid, iqn):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_2ba49349","line":308,"updated":"2015-02-06 09:53:05.000000000","message":"comma instead of %","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"ed48781286a89ae2a8931e964e33b51d9c775af4","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":306,"context_line":"            LOG.error(_LE(\"Failed to remove iscsi target for volume \""},{"line_number":307,"context_line":"                          \"id:%(vol_id)s: %(e)s\")"},{"line_number":308,"context_line":"                      % {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":309,"context_line":"            raise exception.ISCSITargetRemoveFailed(volume_id\u003dvol_id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def show_target(self, tid, iqn):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_0e927df5","line":308,"in_reply_to":"da86d52c_2ba49349","updated":"2015-02-06 10:29:11.000000000","message":"Will change to comma.","commit_id":"d60a9b549208740d0a0a15c497962442f4d01a74"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.initiator_iqn \u003d None"},{"line_number":37,"context_line":"        self.remove_initiator_iqn \u003d None"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def scst_excute(self, *args):"},{"line_number":40,"context_line":"        (out, _err) \u003d utils.execute(\u0027scstadmin\u0027, *args, run_as_root\u003dTrue)"},{"line_number":41,"context_line":"        return out, _err"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_c572d7ac","line":39,"updated":"2015-02-08 20:28:48.000000000","message":"/excute/execute/","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def scst_excute(self, *args):"},{"line_number":40,"context_line":"        (out, _err) \u003d utils.execute(\u0027scstadmin\u0027, *args, run_as_root\u003dTrue)"},{"line_number":41,"context_line":"        return out, _err"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def validate_connector(self, connector):"},{"line_number":44,"context_line":"        self.initiator_iqn \u003d connector[\u0027initiator\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_c5a9f7e0","line":41,"updated":"2015-02-08 20:28:48.000000000","message":"Could change entire body to just be:\n\nreturn utils.execute(...)","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                          \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":118,"context_line":"                                          \u0027-attributes\u0027, \u0027enabled\u003d1\u0027)"},{"line_number":119,"context_line":"        except putils.ProcessExecutionError:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for target driver\"))"},{"line_number":121,"context_line":"        finally:"},{"line_number":122,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027 % out)"},{"line_number":123,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027 % err)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_0564efe3","line":120,"updated":"2015-02-08 20:28:48.000000000","message":"I\u0027d prefer to see a period at the end of the message here and other spots in the file.","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":118,"context_line":"                                          \u0027-attributes\u0027, \u0027enabled\u003d1\u0027)"},{"line_number":119,"context_line":"        except putils.ProcessExecutionError:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for target driver\"))"},{"line_number":121,"context_line":"        finally:"},{"line_number":122,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027 % out)"},{"line_number":123,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027 % err)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_c5801749","line":121,"updated":"2015-02-08 20:28:48.000000000","message":"Should you raise and error out here? Or will it be able to continue even though setting the attribute for the driver failed?","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        except putils.ProcessExecutionError:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for target driver\"))"},{"line_number":121,"context_line":"        finally:"},{"line_number":122,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027 % out)"},{"line_number":123,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027 % err)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_2561f3d3","line":122,"updated":"2015-02-08 20:28:48.000000000","message":"Change both of these from % to ,","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                              \u0027-driver\u0027, self.target_driver)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":133,"context_line":"            LOG.error(_LE(\"Failed to create iscsi target for volume\""},{"line_number":134,"context_line":"                      \"id:%(vol_id)s: %(e)s\")"},{"line_number":135,"context_line":"                      % {\u0027vol_id\u0027: name, \u0027e\u0027: e})"},{"line_number":136,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_458c2780","line":133,"updated":"2015-02-08 20:28:48.000000000","message":"/volume\"/volume \"/\n\nNeed space at the end here since the string continues on the next line.","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":133,"context_line":"            LOG.error(_LE(\"Failed to create iscsi target for volume\""},{"line_number":134,"context_line":"                      \"id:%(vol_id)s: %(e)s\")"},{"line_number":135,"context_line":"                      % {\u0027vol_id\u0027: name, \u0027e\u0027: e})"},{"line_number":136,"context_line":"            raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_name)"},{"line_number":137,"context_line":"        finally:"},{"line_number":138,"context_line":"            LOG.debug(\"StdOut from scstadmin create target: %s\", out)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_455ee713","line":135,"updated":"2015-02-08 20:28:48.000000000","message":"% \u003d\u003e ,","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                                                  self.target_driver,"},{"line_number":147,"context_line":"                                                  \u0027-target\u0027, name)"},{"line_number":148,"context_line":"                except putils.ProcessExecutionError:"},{"line_number":149,"context_line":"                    LOG.error(_LE(\"Failed to create group for SCST target\"))"},{"line_number":150,"context_line":"                finally:"},{"line_number":151,"context_line":"                    LOG.debug(\"StdOut from scstadmin create group: %s\", out)"},{"line_number":152,"context_line":"                    LOG.debug(\"StdErr from scstadmin create group: %s\", err)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_e5db5b7b","line":149,"updated":"2015-02-08 20:28:48.000000000","message":"Again, can it still succeed if add group fails, or should you raise here?","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                                              \u0027-group\u0027, scst_group)"},{"line_number":158,"context_line":"            except putils.ProcessExecutionError:"},{"line_number":159,"context_line":"                LOG.error(_LE(\"Failed to add initiator to group\""},{"line_number":160,"context_line":"                          \" for SCST target\"))"},{"line_number":161,"context_line":"            finally:"},{"line_number":162,"context_line":"                LOG.debug(\"StdOut from scstadmin add initiator: %s\", out)"},{"line_number":163,"context_line":"                LOG.debug(\"StdErr from scstadmin add initiator: %s\", err)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_25e65345","line":160,"updated":"2015-02-08 20:28:48.000000000","message":"Raise?","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                                          \u0027-handler\u0027, \u0027vdisk_fileio\u0027,"},{"line_number":174,"context_line":"                                          \u0027-attributes\u0027, \u0027filename\u003d%s\u0027 % path)"},{"line_number":175,"context_line":"        except putils.ProcessExecutionError:"},{"line_number":176,"context_line":"            LOG.error(_LE(\"Failed to add device disk for handler\"))"},{"line_number":177,"context_line":"        finally:"},{"line_number":178,"context_line":"            LOG.debug(\"StdOut from scstadmin open vdisk info: %s\", out)"},{"line_number":179,"context_line":"            LOG.debug(\"StdErr from scstadmin open vdisk info: %s\", err)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_45e34733","line":176,"updated":"2015-02-08 20:28:48.000000000","message":"Raise?","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff77b6ca342eb961882f244562c7a34cf9fc7f56","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                              \u0027-target\u0027, name,"},{"line_number":192,"context_line":"                                              \u0027-device\u0027, disk_id)"},{"line_number":193,"context_line":"        except putils.ProcessExecutionError:"},{"line_number":194,"context_line":"            LOG.error(_LE(\"Failed to add lun to SCST target\"))"},{"line_number":195,"context_line":"        finally:"},{"line_number":196,"context_line":"            LOG.debug(\"StdOut from scstadmin -add_lun: %s\", out)"},{"line_number":197,"context_line":"            LOG.debug(\"StdErr from scstadmin -add_lun: %s\", err)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_65cf6bb4","line":194,"updated":"2015-02-08 20:28:48.000000000","message":"Seems like you should definitely raise here.","commit_id":"a2bd81e02395899b3f8614b99228a411c85110b2"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fce26158057ebd7337cc632848c756bba7ab877e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                                   target, iqn, lun)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def ensure_export(self, context, volume, volume_path):"},{"line_number":215,"context_line":"        chap_auth \u003d None"},{"line_number":216,"context_line":"        old_name \u003d None"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        iscsi_name \u003d \"%s%s\" % (self.configuration.iscsi_target_prefix,"}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_c4697d8d","line":215,"updated":"2015-02-11 13:17:29.000000000","message":"I think it is redundant","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"fce26158057ebd7337cc632848c756bba7ab877e","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        iscsi_name \u003d \"%s%s\" % (self.configuration.iscsi_target_prefix,"},{"line_number":219,"context_line":"                               volume[\u0027name\u0027])"},{"line_number":220,"context_line":"        self.create_iscsi_target(iscsi_name, volume[\u0027name\u0027], 1, 0, volume_path,"},{"line_number":221,"context_line":"                                 chap_auth, check_exit_code\u003dFalse,"},{"line_number":222,"context_line":"                                 old_name\u003dold_name)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def create_export(self, context, volume, volume_path):"}],"source_content_type":"text/x-python","patch_set":17,"id":"da86d52c_a493a959","line":221,"updated":"2015-02-11 13:17:29.000000000","message":"check_exit_code\u003dFalse and old_name\u003dold_name passes to create_iscsi_target as kwargs, but I don\u0027t see where it is used","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.initiator_iqn \u003d connector[\u0027initiator\u0027]"},{"line_number":44,"context_line":"        # iSCSI drivers require the initiator information"},{"line_number":45,"context_line":"        if \u0027initiator\u0027 not in connector:"},{"line_number":46,"context_line":"            err_msg \u003d (_(\u0027The volume driver requires the iSCSI initiator \u0027"},{"line_number":47,"context_line":"                         \u0027name in the connector.\u0027))"},{"line_number":48,"context_line":"            LOG.error(err_msg)"},{"line_number":49,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_74285133","line":46,"updated":"2015-02-12 11:35:38.000000000","message":"redundant outer parentheses","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                    return iscsi_target, (lun + 1)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def create_iscsi_target(self, name, vol_id, tid, lun, path,"},{"line_number":110,"context_line":"                            chap_auth\u003dNone, **kwargs):"},{"line_number":111,"context_line":"        scst_group \u003d self.initiator_iqn"},{"line_number":112,"context_line":"        vol_name \u003d path.split(\"/\")[3]"},{"line_number":113,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_0f77fca0","line":110,"updated":"2015-02-12 11:35:38.000000000","message":"Do you need kwargs? you don\u0027t use it","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a75c3b154d434b8f0159856911d0dad0c2feb384","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                           \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":116,"context_line":"                                           \u0027-attributes\u0027, \u0027enabled\u003d1\u0027)"},{"line_number":117,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027, out)"},{"line_number":118,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027, err)"},{"line_number":119,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for enable target driver \""},{"line_number":121,"context_line":"                          \"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_55ad149a","line":118,"updated":"2015-02-12 05:58:53.000000000","message":"If err is not None, does it mean that there is a ProcessExecutionError?","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ceb0d94f8ff3628062f6f7c6686ef8af8bd0c188","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                           \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":116,"context_line":"                                           \u0027-attributes\u0027, \u0027enabled\u003d1\u0027)"},{"line_number":117,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027, out)"},{"line_number":118,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027, err)"},{"line_number":119,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for enable target driver \""},{"line_number":121,"context_line":"                          \"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_306d0ecd","line":118,"in_reply_to":"da86d52c_15c2bce8","updated":"2015-02-12 06:20:35.000000000","message":"The commit message of this patch described the UnicodeError:  https://review.openstack.org/#/c/143162/","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                           \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":116,"context_line":"                                           \u0027-attributes\u0027, \u0027enabled\u003d1\u0027)"},{"line_number":117,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027, out)"},{"line_number":118,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027, err)"},{"line_number":119,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for enable target driver \""},{"line_number":121,"context_line":"                          \"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_cf3244f1","line":118,"in_reply_to":"da86d52c_55ad149a","updated":"2015-02-12 11:35:38.000000000","message":"Agree, LOG.debug(\u0027StdErr from set driver attribute: %s\u0027, err) is reduntant, and as xing-yang mentioned makes bug, I think you should delete it","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5610d6fe64598112b1f40d69873971e19581eb12","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                           \u0027-set_drv_attr\u0027, self.target_driver,"},{"line_number":116,"context_line":"                                           \u0027-attributes\u0027, \u0027enabled\u003d1\u0027)"},{"line_number":117,"context_line":"            LOG.debug(\u0027StdOut from set driver attribute: %s\u0027, out)"},{"line_number":118,"context_line":"            LOG.debug(\u0027StdErr from set driver attribute: %s\u0027, err)"},{"line_number":119,"context_line":"        except putils.ProcessExecutionError as e:"},{"line_number":120,"context_line":"            LOG.error(_LE(\"Failed to set attribute for enable target driver \""},{"line_number":121,"context_line":"                          \"%s\"), e)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_15c2bce8","line":118,"in_reply_to":"da86d52c_55ad149a","updated":"2015-02-12 06:12:49.000000000","message":"Good catch. Actually this will raise an unicode error. John caught this problem a while ago. You should use six.text_type(err) since this is a debug message. If you add it to an error message LOG.error(_LE(\"xxxxx %s\"), e), that should be fine.\r\n\r\nSame applies to other places.","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            disk_id \u003d \"%s%s\" % (lun, vol_id.split(\u0027-\u0027)[-1])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        try:"},{"line_number":182,"context_line":"            (out, err) \u003d self.scst_execute(\u0027-open_dev\u0027, disk_id,"},{"line_number":183,"context_line":"                                           \u0027-handler\u0027, \u0027vdisk_fileio\u0027,"},{"line_number":184,"context_line":"                                           \u0027-attributes\u0027, \u0027filename\u003d%s\u0027 % path)"},{"line_number":185,"context_line":"        except putils.ProcessExecutionError as e:"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_4ff2d406","line":182,"updated":"2015-02-12 11:35:38.000000000","message":"if you don\u0027t use (out, err) variables, please delete it","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # SCST uses /etc/scst.conf as the default configuration when it"},{"line_number":212,"context_line":"            # starts"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        (out, err) \u003d self.scst_execute(\u0027-write_config\u0027, \u0027/etc/scst.conf\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        return tid"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_4f5734ca","line":214,"updated":"2015-02-12 11:35:38.000000000","message":"what about possible ProcessExecutionError exception","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                                   target, iqn, lun)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def ensure_export(self, context, volume, volume_path):"},{"line_number":223,"context_line":"        chap_auth \u003d None"},{"line_number":224,"context_line":"        iscsi_name \u003d \"%s%s\" % (self.configuration.iscsi_target_prefix,"},{"line_number":225,"context_line":"                               volume[\u0027name\u0027])"},{"line_number":226,"context_line":"        self.create_iscsi_target(iscsi_name, volume[\u0027name\u0027], 1, 0, volume_path,"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_effc68b7","line":223,"updated":"2015-02-12 11:35:38.000000000","message":"reduntant, chap_auth \u003d None by default in create_iscsi_target","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        return data"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def remove_export(self, context, volume):"},{"line_number":259,"context_line":"        if not volume[\u0027provider_location\u0027]:"},{"line_number":260,"context_line":"            return"},{"line_number":261,"context_line":"        try:"},{"line_number":262,"context_line":"            location \u003d volume[\u0027provider_location\u0027].split(\u0027 \u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_afcb5070","line":259,"updated":"2015-02-12 11:35:38.000000000","message":"maybe you should add logging here","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                          \"id:%(vol_id)s: %(e)s\"), {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":295,"context_line":"                raise exception.ISCSITargetRemoveFailed(volume_id\u003dvol_id)"},{"line_number":296,"context_line":"            try:"},{"line_number":297,"context_line":"                (out, _err) \u003d self.scst_execute(\u0027-noprompt\u0027,"},{"line_number":298,"context_line":"                                                \u0027-close_dev\u0027, \"disk%s\" % tid,"},{"line_number":299,"context_line":"                                                \u0027-handler\u0027, \u0027vdisk_fileio\u0027)"},{"line_number":300,"context_line":"            except putils.ProcessExecutionError as e:"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_2f8e802e","line":297,"updated":"2015-02-12 11:35:38.000000000","message":"(out, _err) don\u0027t used","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            if self._get_target(iqn):"},{"line_number":307,"context_line":"                try:"},{"line_number":308,"context_line":"                    (out, _err) \u003d self.scst_execute(\u0027-noprompt\u0027,"},{"line_number":309,"context_line":"                                                    \u0027-rem_target\u0027, iqn,"},{"line_number":310,"context_line":"                                                    \u0027-driver\u0027,"},{"line_number":311,"context_line":"                                                    self.target_driver)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_af799030","line":308,"updated":"2015-02-12 11:35:38.000000000","message":"(out, _err) don\u0027t used","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            if not int(lun) in self._get_luns_info():"},{"line_number":319,"context_line":"                raise exception.ISCSITargetRemoveFailed(volume_id\u003dvol_id)"},{"line_number":320,"context_line":"            try:"},{"line_number":321,"context_line":"                (out, _err) \u003d self.scst_execute(\u0027-noprompt\u0027, \u0027-rem_lun\u0027, lun,"},{"line_number":322,"context_line":"                                                \u0027-driver\u0027, self.target_driver,"},{"line_number":323,"context_line":"                                                \u0027-target\u0027, iqn, \u0027-group\u0027,"},{"line_number":324,"context_line":"                                                self.remove_initiator_iqn)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_ef6f085e","line":321,"updated":"2015-02-12 11:35:38.000000000","message":"(out, _err) don\u0027t used","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                    error_message\u003d\"Failed to remove LUN for SCST Target.\")"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"            try:"},{"line_number":331,"context_line":"                (out, _err) \u003d self.scst_execute(\u0027-noprompt\u0027,"},{"line_number":332,"context_line":"                                                \u0027-close_dev\u0027, disk_id,"},{"line_number":333,"context_line":"                                                \u0027-handler\u0027, \u0027vdisk_fileio\u0027)"},{"line_number":334,"context_line":"            except putils.ProcessExecutionError as e:"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_0f929c4b","line":331,"updated":"2015-02-12 11:35:38.000000000","message":"(out, _err) don\u0027t used","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"83229b57cfe7abf897f7b10cf41e604d1326034b","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        tid \u003d self._get_target(iqn)"},{"line_number":348,"context_line":"        if tid is None:"},{"line_number":349,"context_line":"            raise exception.NotFound()"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":352,"context_line":"        iscsi_properties \u003d self._get_iscsi_properties(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da86d52c_aff51084","line":349,"updated":"2015-02-12 11:35:38.000000000","message":"I think better use more specific exception or at last add exception message","commit_id":"1e0c4333a32d27eaf2d9064b62f6b2628a130485"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"124f0589d29b37b6b98722b44dbb8918485350f1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                        \u0027name in the connector.\u0027)"},{"line_number":47,"context_line":"            LOG.error(err_msg)"},{"line_number":48,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":49,"context_line":"        self.initiator_iqn \u003d connector[\u0027initiator\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":52,"context_line":"        self.remove_initiator_iqn \u003d connector[\u0027initiator\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"da86d52c_1f1e32bb","line":49,"updated":"2015-02-12 20:43:48.000000000","message":"Good catch!","commit_id":"e7e1b1466c8886b5f84ad72fb9be7152f7993a56"}],"etc/cinder/rootwrap.conf":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"60789be15858227c046d2c20ec2e6d6edccb7b85","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,/usr/local/sbin"},{"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":17,"id":"da86d52c_a4ff4d00","line":13,"updated":"2015-02-10 17:30:02.000000000","message":"There\u0027s some discussion about having /usr/local in the rootwrap.conf, we\u0027ll need to get that straightened out before proceeding.\n\nAs it turns out, we should default to anything in System Path so these should be unnecessary anyway. Let\u0027s see if we can get this sorted and avoid adding /usr/local paths to the rootwrap.conf file like this.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"},{"author":{"_account_id":14252,"name":"nikeshmahalka","email":"Nikesh.Mahalka@emulex.com","username":"nikeshmahalka"},"change_message_id":"b4501d593677b8ee5b4cf5f77e6192cff71d8333","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,/usr/local/sbin"},{"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":17,"id":"da86d52c_c7ec2cbe","line":13,"in_reply_to":"da86d52c_a4ff4d00","updated":"2015-02-11 06:46:14.000000000","message":"John, I agree that if you can default to system path for exec_dirs, then we don\u0027t need any of these directories to be mentioned here. If it is addressed by another blueprint, we can either not merge this file, or we can merge this file and this whole line gets addressed as part of the other blueprint. \nPlease advice.","commit_id":"0cd9130085e0ad1a10cc89a1ba983c65967652a3"}]}
