)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"dee42effb2c6051367304cece12991c15516768c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"IET driver was not implemented. This patch adds IET target for new"},{"line_number":11,"context_line":"iscsi target driver model."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1409918"},{"line_number":14,"context_line":"Change-Id: I165a592bb3a39728fcc3d8ee4162b579c13ba928"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba7be1f8_a3299f9c","line":13,"updated":"2015-02-26 06:13:50.000000000","message":"This is not a bug, this is adding a target driver. Please submit a blueprint and fix the commit message:\n\nhttps://wiki.openstack.org/wiki/Blueprints","commit_id":"10f4e518a5f87a6138dd824e1c25da8d37382669"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"d483be91f776fef78385b649004593a55e048926","unresolved":false,"context_lines":[{"line_number":10,"context_line":"IET driver was not implemented. This patch adds IET target for new"},{"line_number":11,"context_line":"iscsi target driver model."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1409918"},{"line_number":14,"context_line":"Change-Id: I165a592bb3a39728fcc3d8ee4162b579c13ba928"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba7be1f8_6be764ac","line":13,"in_reply_to":"ba7be1f8_a3299f9c","updated":"2015-02-26 17:12:17.000000000","message":"Actually I think a bug is fine here, this is a driver that we have always had in the past that was never finished up in the target refactor.  It\u0027s not really \"new\" per say.\n\nIf it\u0027s better for tracking etc to make a bp that\u0027s totally cool, just wanted to point out that it could be seen as either I think.","commit_id":"10f4e518a5f87a6138dd824e1c25da8d37382669"}],"cinder/tests/targets/test_iet_driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.configuration \u003d conf.Configuration(None)"},{"line_number":37,"context_line":"        self.configuration.append_config_values \u003d mock.Mock(return_value\u003d0)"},{"line_number":38,"context_line":"        self.configuration.iscsi_ip_address \u003d \u002710.9.8.7\u0027"},{"line_number":39,"context_line":"        self.fake_project_id \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":40,"context_line":"        self.fake_volume_id \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"},{"line_number":41,"context_line":"        self.target \u003d iet.IetAdm(root_helper\u003dutils.get_root_helper(),"},{"line_number":42,"context_line":"                                 configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_65d646c7","line":39,"updated":"2015-03-05 21:06:57.000000000","message":"Maybe fakes initialization should be moved to setUp method but I won\u0027t block patch for it","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"}],"cinder/volume/targets/iet.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from cinder import exception"},{"line_number":20,"context_line":"from cinder.i18n import _LI, _LE"},{"line_number":21,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":22,"context_line":"from cinder import utils"},{"line_number":23,"context_line":"from cinder.volume.targets import iscsi"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_310d3dea","line":21,"updated":"2015-02-24 20:25:37.000000000","message":"This will need to change to oslo.log after we land that change.  Doesn\u0027t need to be changed now.  Just making note of it so I don\u0027t forget.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.error(_LE(\u0027Failed to open iet session list for \u0027"},{"line_number":55,"context_line":"                          \u0027%(iqn)s: %(e)s\u0027),"},{"line_number":56,"context_line":"                      {\u0027iqn\u0027: iqn, \u0027e\u0027: e})"},{"line_number":57,"context_line":"            raise"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        session_list \u003d re.split(\u0027^tid:(?m)\u0027, sessions)[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_b194cd43","line":56,"updated":"2015-02-24 20:25:37.000000000","message":"Safest to do a six.text_type(e) here.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"8dd1183ac46ca29e61b209c1da29285e9cbe652c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.error(_LE(\u0027Failed to open iet session list for \u0027"},{"line_number":55,"context_line":"                          \u0027%(iqn)s: %(e)s\u0027),"},{"line_number":56,"context_line":"                      {\u0027iqn\u0027: iqn, \u0027e\u0027: e})"},{"line_number":57,"context_line":"            raise"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        session_list \u003d re.split(\u0027^tid:(?m)\u0027, sessions)[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_e5503fd6","line":56,"in_reply_to":"ba7be1f8_b194cd43","updated":"2015-02-24 21:57:53.000000000","message":"There was a big long chain on this in the channel, the end conclusion is that six.text_type() is not required here as long as we are passing exception via \u0027, e\u0027 rather than \u0027% e\u0027, confirmed via Ivan/John/xyang/smcginnis","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                except Exception as e:"},{"line_number":93,"context_line":"                    LOG.error(_LE(\u0027Failed to open iet config file for \u0027"},{"line_number":94,"context_line":"                                  \u0027%(name)s: %(e)s\u0027),"},{"line_number":95,"context_line":"                              {\u0027name\u0027: name, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    raise"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            target_find \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_51af117d","line":95,"updated":"2015-02-24 20:25:37.000000000","message":"Same comment here.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                              {\u0027name\u0027: name, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    raise"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            target_find \u003d False"},{"line_number":99,"context_line":"            for line in iet_conf_text:"},{"line_number":100,"context_line":"                if target_find is True:"},{"line_number":101,"context_line":"                    m \u003d re.search(\u0027(\\w+) (\\w+) (\\w+)\u0027, line)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_51fd516d","line":98,"updated":"2015-02-24 20:25:37.000000000","message":"Suggest using target_found instead of target_find.  I think that makes what this is being used for clearer.  Thanks!","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"912bd985c80de3c73a65aae8543bc41069f75b32","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                              {\u0027name\u0027: name, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    raise"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            target_find \u003d False"},{"line_number":99,"context_line":"            for line in iet_conf_text:"},{"line_number":100,"context_line":"                if target_find is True:"},{"line_number":101,"context_line":"                    m \u003d re.search(\u0027(\\w+) (\\w+) (\\w+)\u0027, line)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_67c7ba64","line":98,"in_reply_to":"ba7be1f8_51fd516d","updated":"2015-02-26 00:32:56.000000000","message":"Done","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    def update_config_file(self, name, tid, path, config_auth):"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        conf_file \u003d self.iet_conf"},{"line_number":140,"context_line":"        if os.path.exists(conf_file):"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                volume_conf \u003d \"\"\""},{"line_number":143,"context_line":"                        Target %s"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_d175c1fa","line":140,"updated":"2015-02-24 20:25:37.000000000","message":"What happens if the conf_file doesn\u0027t existing?  Seems like a warning should be reported.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"912bd985c80de3c73a65aae8543bc41069f75b32","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    def update_config_file(self, name, tid, path, config_auth):"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        conf_file \u003d self.iet_conf"},{"line_number":140,"context_line":"        if os.path.exists(conf_file):"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                volume_conf \u003d \"\"\""},{"line_number":143,"context_line":"                        Target %s"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_a7e0d2cd","line":140,"in_reply_to":"ba7be1f8_d175c1fa","updated":"2015-02-26 00:32:56.000000000","message":"In this case, iscsi target is created and volume is exported but there is no configuration file updated. If iscsi target stops unfortunately, we can\u0027t recreate iscsi target because there is no information about previous iscsi targets.\n\nI added Log.warn.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"8dd1183ac46ca29e61b209c1da29285e9cbe652c","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        Target %s"},{"line_number":144,"context_line":"                            %s"},{"line_number":145,"context_line":"                            Lun 0 Path\u003d%s,Type\u003d%s"},{"line_number":146,"context_line":"                \"\"\" % (name, config_auth, path, self._iotype(path))"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                with utils.temporary_chown(conf_file):"},{"line_number":149,"context_line":"                    with open(conf_file, \u0027a+\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_e5c3df54","line":146,"updated":"2015-02-24 21:57:53.000000000","message":"Looks like the conversion between incominguser and Incominguser is no longer required ?","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"912bd985c80de3c73a65aae8543bc41069f75b32","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                        Target %s"},{"line_number":144,"context_line":"                            %s"},{"line_number":145,"context_line":"                            Lun 0 Path\u003d%s,Type\u003d%s"},{"line_number":146,"context_line":"                \"\"\" % (name, config_auth, path, self._iotype(path))"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                with utils.temporary_chown(conf_file):"},{"line_number":149,"context_line":"                    with open(conf_file, \u0027a+\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_c731465b","line":146,"in_reply_to":"ba7be1f8_e5c3df54","updated":"2015-02-26 00:32:56.000000000","message":"ietadm uses \"IncomingUser\". (Upper I and Upper U).\nWe only need to take care of this here.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                vol_id \u003d name.split(\u0027:\u0027)[1]"},{"line_number":153,"context_line":"                LOG.error(_LE(\"Failed to create iscsi target for volume \""},{"line_number":154,"context_line":"                              \"id:%(vol_id)s: %(e)s\"),"},{"line_number":155,"context_line":"                          {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":156,"context_line":"                raise exception.ISCSITargetCreateFailed(volume_id\u003dvol_id)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def remove_iscsi_target(self, tid, lun, vol_id, vol_name, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_711095a8","line":155,"updated":"2015-02-24 20:25:37.000000000","message":"six.text_type","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self._delete_target(tid)"},{"line_number":168,"context_line":"        vol_uuid_file \u003d vol_name"},{"line_number":169,"context_line":"        conf_file \u003d self.iet_conf"},{"line_number":170,"context_line":"        if os.path.exists(conf_file):"},{"line_number":171,"context_line":"            with utils.temporary_chown(conf_file):"},{"line_number":172,"context_line":"                with open(conf_file, \u0027r+\u0027) as iet_conf_text:"},{"line_number":173,"context_line":"                    full_txt \u003d iet_conf_text.readlines()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_9156e95a","line":170,"updated":"2015-02-24 20:25:37.000000000","message":"Same comment here.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"912bd985c80de3c73a65aae8543bc41069f75b32","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self._delete_target(tid)"},{"line_number":168,"context_line":"        vol_uuid_file \u003d vol_name"},{"line_number":169,"context_line":"        conf_file \u003d self.iet_conf"},{"line_number":170,"context_line":"        if os.path.exists(conf_file):"},{"line_number":171,"context_line":"            with utils.temporary_chown(conf_file):"},{"line_number":172,"context_line":"                with open(conf_file, \u0027r+\u0027) as iet_conf_text:"},{"line_number":173,"context_line":"                    full_txt \u003d iet_conf_text.readlines()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_274222ae","line":170,"in_reply_to":"ba7be1f8_9156e95a","updated":"2015-02-26 00:32:56.000000000","message":"I added Log.warn.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        except Exception as e:"},{"line_number":197,"context_line":"            LOG.info(_LI(\u0027Failed to open iet session list for \u0027"},{"line_number":198,"context_line":"                         \u0027%(vol_id)s: %(e)s\u0027),"},{"line_number":199,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":200,"context_line":"            return None"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        session_list \u003d re.split(\u0027^tid:(?m)\u0027, sessions)[1:]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_f149e5b7","line":199,"updated":"2015-02-24 20:25:37.000000000","message":"six.text_type","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"049afa3650fdf9469f2065967707ab0528f8d23b","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                      \u0027--params\u0027, \u0027Name\u003d%s\u0027 % name,"},{"line_number":228,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 234])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def _delete_target(self, tid):"},{"line_number":231,"context_line":"        utils.execute(\u0027ietadm\u0027, \u0027--op\u0027, \u0027delete\u0027,"},{"line_number":232,"context_line":"                      \u0027--tid\u003d%s\u0027 % tid,"},{"line_number":233,"context_line":"                      run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_11bf5962","line":230,"updated":"2015-02-24 20:25:37.000000000","message":"I don\u0027t see that any of the calls to these are in a try block.  They should be as execute could return a process execution error.  So, either that needs to be handled here or in the functions calling the subsequent functions.","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"912bd985c80de3c73a65aae8543bc41069f75b32","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                      \u0027--params\u0027, \u0027Name\u003d%s\u0027 % name,"},{"line_number":228,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 234])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def _delete_target(self, tid):"},{"line_number":231,"context_line":"        utils.execute(\u0027ietadm\u0027, \u0027--op\u0027, \u0027delete\u0027,"},{"line_number":232,"context_line":"                      \u0027--tid\u003d%s\u0027 % tid,"},{"line_number":233,"context_line":"                      run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_67489acc","line":230,"in_reply_to":"ba7be1f8_11bf5962","updated":"2015-02-26 00:32:56.000000000","message":"Done","commit_id":"fc4dbcbbd4a8d2eb8d6981dc2cf7c021424aee5f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"},{"line_number":52,"context_line":"                sessions \u003d f.read()"},{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.error(_LE(\u0027Failed to open iet session list for \u0027"},{"line_number":55,"context_line":"                          \u0027%(iqn)s: %(e)s\u0027),"},{"line_number":56,"context_line":"                      {\u0027iqn\u0027: iqn, \u0027e\u0027: e})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_5a175d51","line":53,"updated":"2015-03-05 21:06:57.000000000","message":"I would like to not catch too general exception if can catch more specific one","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c48fea30ff558950f75278ced57f4bc008bf2d28","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"},{"line_number":52,"context_line":"                sessions \u003d f.read()"},{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.error(_LE(\u0027Failed to open iet session list for \u0027"},{"line_number":55,"context_line":"                          \u0027%(iqn)s: %(e)s\u0027),"},{"line_number":56,"context_line":"                      {\u0027iqn\u0027: iqn, \u0027e\u0027: e})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_6d0f082f","line":53,"in_reply_to":"9a80dd14_5a175d51","updated":"2015-03-05 22:30:06.000000000","message":"He is just re-raising it here, so I think the general exception is fine.   All he wants to do is log it.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"efd4a9f90b9d0fd148f30e7f653eb425045fff65","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"},{"line_number":52,"context_line":"                sessions \u003d f.read()"},{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.error(_LE(\u0027Failed to open iet session list for \u0027"},{"line_number":55,"context_line":"                          \u0027%(iqn)s: %(e)s\u0027),"},{"line_number":56,"context_line":"                      {\u0027iqn\u0027: iqn, \u0027e\u0027: e})"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_1daa35d4","line":53,"in_reply_to":"9a80dd14_6d0f082f","updated":"2015-03-06 00:42:12.000000000","message":"Yes. The purpose is logging an error.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                try:"},{"line_number":91,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":92,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":93,"context_line":"                except Exception as e:"},{"line_number":94,"context_line":"                    LOG.debug(\u0027Failed to open config for %(vol_id)s: %(e)s\u0027,"},{"line_number":95,"context_line":"                              {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_2579ae93","line":93,"updated":"2015-03-05 21:06:57.000000000","message":"Save as above","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c48fea30ff558950f75278ced57f4bc008bf2d28","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                try:"},{"line_number":91,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":92,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":93,"context_line":"                except Exception as e:"},{"line_number":94,"context_line":"                    LOG.debug(\u0027Failed to open config for %(vol_id)s: %(e)s\u0027,"},{"line_number":95,"context_line":"                              {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_ed2a187d","line":93,"in_reply_to":"9a80dd14_2579ae93","updated":"2015-03-05 22:30:06.000000000","message":"but he\u0027s returning None here, so I presume he\u0027s ok with the exception.  Maybe LOG.warn is ok.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"efd4a9f90b9d0fd148f30e7f653eb425045fff65","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                try:"},{"line_number":91,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":92,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":93,"context_line":"                except Exception as e:"},{"line_number":94,"context_line":"                    LOG.debug(\u0027Failed to open config for %(vol_id)s: %(e)s\u0027,"},{"line_number":95,"context_line":"                              {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_3911ceac","line":93,"in_reply_to":"9a80dd14_ed2a187d","updated":"2015-03-06 00:42:12.000000000","message":"I agree LOG.warn is fine here.\n\nThere are two cases which call _get_target_chap_auth().\n\n- create_export\n\nIn this case, we will create new iscsi target export, so we don\u0027t have chap info in the config file. Therefore it\u0027s not a problem when open() raises exception. Simply return none and create new chap info. In this case, LOG.debug or LOG.info are fine.\n\n- ensure_export\n\nIn this case, we will recreate iscsi target export. so we need chap here but if we couldn\u0027t get chap, return none and LOG.warn message are fine.\n\nWe couldn\u0027t distinguish caller of the method, so I will add LOG.warn for this case.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":92,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":93,"context_line":"                except Exception as e:"},{"line_number":94,"context_line":"                    LOG.debug(\u0027Failed to open config for %(vol_id)s: %(e)s\u0027,"},{"line_number":95,"context_line":"                              {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    return None"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_457062a5","line":94,"updated":"2015-03-05 21:06:57.000000000","message":"LOG.error should be here","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"03128228f9a9b2ed915d9727f39ba32e09a73d18","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":92,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":93,"context_line":"                except Exception as e:"},{"line_number":94,"context_line":"                    LOG.debug(\u0027Failed to open config for %(vol_id)s: %(e)s\u0027,"},{"line_number":95,"context_line":"                              {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":96,"context_line":"                    return None"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_0201c0ae","line":94,"in_reply_to":"9a80dd14_457062a5","updated":"2015-03-07 01:02:38.000000000","message":"we should only be logging errors if there is a failure that prevents things from working.   since it looks like he\u0027s expecting it, by returning None, I think a warning is ok.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            target_found \u003d False"},{"line_number":99,"context_line":"            for line in iet_conf_text:"},{"line_number":100,"context_line":"                if target_found is True:"},{"line_number":101,"context_line":"                    m \u003d re.search(\u0027(\\w+) (\\w+) (\\w+)\u0027, line)"},{"line_number":102,"context_line":"                    if m:"},{"line_number":103,"context_line":"                        return (m.group(2), m.group(3))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_457ea26c","line":100,"updated":"2015-03-05 21:06:57.000000000","message":"Could be simplified to:\nif target_found:","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"efd4a9f90b9d0fd148f30e7f653eb425045fff65","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            target_found \u003d False"},{"line_number":99,"context_line":"            for line in iet_conf_text:"},{"line_number":100,"context_line":"                if target_found is True:"},{"line_number":101,"context_line":"                    m \u003d re.search(\u0027(\\w+) (\\w+) (\\w+)\u0027, line)"},{"line_number":102,"context_line":"                    if m:"},{"line_number":103,"context_line":"                        return (m.group(2), m.group(3))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_f999f61f","line":100,"in_reply_to":"9a80dd14_457ea26c","updated":"2015-03-06 00:42:12.000000000","message":"will do","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                with utils.temporary_chown(conf_file):"},{"line_number":157,"context_line":"                    with open(conf_file, \u0027a+\u0027) as f:"},{"line_number":158,"context_line":"                        f.write(volume_conf)"},{"line_number":159,"context_line":"            except putils.ProcessExecutionError as e:"},{"line_number":160,"context_line":"                vol_id \u003d name.split(\u0027:\u0027)[1]"},{"line_number":161,"context_line":"                LOG.error(_LE(\"Failed to update %(conf)s for volume \""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_857dfa1e","line":158,"updated":"2015-03-05 21:06:57.000000000","message":"Should we add exception handling here or add other exceptions except statement below for case if write to file operation failed?","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"efd4a9f90b9d0fd148f30e7f653eb425045fff65","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"                with utils.temporary_chown(conf_file):"},{"line_number":157,"context_line":"                    with open(conf_file, \u0027a+\u0027) as f:"},{"line_number":158,"context_line":"                        f.write(volume_conf)"},{"line_number":159,"context_line":"            except putils.ProcessExecutionError as e:"},{"line_number":160,"context_line":"                vol_id \u003d name.split(\u0027:\u0027)[1]"},{"line_number":161,"context_line":"                LOG.error(_LE(\"Failed to update %(conf)s for volume \""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_7d6331dc","line":158,"in_reply_to":"9a80dd14_857dfa1e","updated":"2015-03-06 00:42:12.000000000","message":"will do","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e0b4888e4e9c86da324ce6ea88a0a6675c8e52a0","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"},{"line_number":221,"context_line":"                sessions \u003d f.read()"},{"line_number":222,"context_line":"        except Exception as e:"},{"line_number":223,"context_line":"            LOG.info(_LI(\u0027Failed to open iet session list for \u0027"},{"line_number":224,"context_line":"                         \u0027%(vol_id)s: %(e)s\u0027),"},{"line_number":225,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":226,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_c54a92c4","line":223,"updated":"2015-03-05 21:06:57.000000000","message":"Too general exception","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c48fea30ff558950f75278ced57f4bc008bf2d28","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"},{"line_number":221,"context_line":"                sessions \u003d f.read()"},{"line_number":222,"context_line":"        except Exception as e:"},{"line_number":223,"context_line":"            LOG.info(_LI(\u0027Failed to open iet session list for \u0027"},{"line_number":224,"context_line":"                         \u0027%(vol_id)s: %(e)s\u0027),"},{"line_number":225,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":226,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_ed51380f","line":223,"in_reply_to":"9a80dd14_c54a92c4","updated":"2015-03-05 22:30:06.000000000","message":"again, he\u0027s returning None, so he\u0027s ok with the exception.  He\u0027s simply logging it.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"efd4a9f90b9d0fd148f30e7f653eb425045fff65","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"},{"line_number":221,"context_line":"                sessions \u003d f.read()"},{"line_number":222,"context_line":"        except Exception as e:"},{"line_number":223,"context_line":"            LOG.info(_LI(\u0027Failed to open iet session list for \u0027"},{"line_number":224,"context_line":"                         \u0027%(vol_id)s: %(e)s\u0027),"},{"line_number":225,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":226,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_3d97f991","line":223,"in_reply_to":"9a80dd14_ed51380f","updated":"2015-03-06 00:42:12.000000000","message":"Yes. The purpose is logging an error too.","commit_id":"0a6f8a04527ab0f2c53e98f2f0bfa5ada68a8d58"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"74a02290faf81d4fb0304486ef0d7017599bdf0e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                with utils.temporary_chown(self.iet_conf):"},{"line_number":89,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":90,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":91,"context_line":"            except Exception as e:"},{"line_number":92,"context_line":"                LOG.warn(_LW(\"Failed to open config for %(vol_id)s: %(e)s\"),"},{"line_number":93,"context_line":"                         {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":94,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_2dbf95ab","line":91,"updated":"2015-03-07 01:12:42.000000000","message":"Not going to check for IOError or via os.path.exists ?","commit_id":"7c682f3d0c79e03046a9e7568a6e4ca2670a50e0"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"78ae1e31a023aa3542bcd3e5c73b80645514806a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                with utils.temporary_chown(self.iet_conf):"},{"line_number":89,"context_line":"                    with open(self.iet_conf, \u0027r\u0027) as f:"},{"line_number":90,"context_line":"                        iet_conf_text \u003d f.readlines()"},{"line_number":91,"context_line":"            except Exception as e:"},{"line_number":92,"context_line":"                LOG.warn(_LW(\"Failed to open config for %(vol_id)s: %(e)s\"),"},{"line_number":93,"context_line":"                         {\u0027vol_id\u0027: vol_id, \u0027e\u0027: e})"},{"line_number":94,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_ba93505b","line":91,"in_reply_to":"9a80dd14_2dbf95ab","updated":"2015-03-10 18:18:40.000000000","message":"Yes. \"No such file or directory\" case is covered os.path.exists and then warning message will be shown in the log.\n\nAlso I added raise for this case instead of returning None.\nAs a result I think the behavior of new patch becomes same as _get_target_chap_auth() in tgt and cxt target.","commit_id":"7c682f3d0c79e03046a9e7568a6e4ca2670a50e0"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"db251852084f70bcc5c5283aeb6e8d86eaa6e7e3","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            # operator here."},{"line_number":113,"context_line":"            LOG.warn(_LW(\"Failed to find CHAP auth from config for \""},{"line_number":114,"context_line":"                         \"%(vol_id)s. Config file %(conf)s does not exist.\"),"},{"line_number":115,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027conf\u0027: self.iet_conf})"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_iscsi_target(self, name, tid, lun, path,"},{"line_number":118,"context_line":"                            chap_auth\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_424a6aad","line":115,"updated":"2015-03-10 20:06:36.000000000","message":"I thought an implicit return None would be required, but guess not ?","commit_id":"c0f9c90db16bbae46df107a93788057e72f56e63"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"44963bd7468272584b3af27c69f4d4fa04d3b170","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            # operator here."},{"line_number":113,"context_line":"            LOG.warn(_LW(\"Failed to find CHAP auth from config for \""},{"line_number":114,"context_line":"                         \"%(vol_id)s. Config file %(conf)s does not exist.\"),"},{"line_number":115,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027conf\u0027: self.iet_conf})"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_iscsi_target(self, name, tid, lun, path,"},{"line_number":118,"context_line":"                            chap_auth\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_aa191924","line":115,"in_reply_to":"9a80dd14_424a6aad","updated":"2015-03-11 13:40:36.000000000","message":"I would prefer to see this explicit.","commit_id":"c0f9c90db16bbae46df107a93788057e72f56e63"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"dc0672ea7867b02aedbbb58a2f75b5304a24f7b2","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            # operator here."},{"line_number":113,"context_line":"            LOG.warn(_LW(\"Failed to find CHAP auth from config for \""},{"line_number":114,"context_line":"                         \"%(vol_id)s. Config file %(conf)s does not exist.\"),"},{"line_number":115,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027conf\u0027: self.iet_conf})"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_iscsi_target(self, name, tid, lun, path,"},{"line_number":118,"context_line":"                            chap_auth\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_acb922cd","line":115,"in_reply_to":"9a80dd14_aa191924","updated":"2015-03-11 20:24:48.000000000","message":"Whoops, I meant \u0027an explicit return None\u0027, not \u0027implicit\u0027","commit_id":"c0f9c90db16bbae46df107a93788057e72f56e63"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"564fee6065c803665929f419815c882581fb0b6d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            # operator here."},{"line_number":113,"context_line":"            LOG.warn(_LW(\"Failed to find CHAP auth from config for \""},{"line_number":114,"context_line":"                         \"%(vol_id)s. Config file %(conf)s does not exist.\"),"},{"line_number":115,"context_line":"                     {\u0027vol_id\u0027: vol_id, \u0027conf\u0027: self.iet_conf})"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_iscsi_target(self, name, tid, lun, path,"},{"line_number":118,"context_line":"                            chap_auth\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_7638cc3d","line":115,"in_reply_to":"9a80dd14_acb922cd","updated":"2015-03-12 01:24:19.000000000","message":"\u0027implicit\u0027 made me confuse...\nDone.","commit_id":"c0f9c90db16bbae46df107a93788057e72f56e63"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"44963bd7468272584b3af27c69f4d4fa04d3b170","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                     {\u0027conf\u0027: conf_file, \u0027vol_id\u0027: vol_id})"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def _find_sid_cid_for_target(self, tid, name, vol_id):"},{"line_number":231,"context_line":"        \"Find sid, cid for existing iscsi target\""},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_caff2da9","line":231,"updated":"2015-03-11 13:40:36.000000000","message":"Should be three quotes for doc string.","commit_id":"c0f9c90db16bbae46df107a93788057e72f56e63"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"564fee6065c803665929f419815c882581fb0b6d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                     {\u0027conf\u0027: conf_file, \u0027vol_id\u0027: vol_id})"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def _find_sid_cid_for_target(self, tid, name, vol_id):"},{"line_number":231,"context_line":"        \"Find sid, cid for existing iscsi target\""},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        try:"},{"line_number":234,"context_line":"            with open(self.iet_sessions, \u0027r\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_1604f07c","line":231,"in_reply_to":"9a80dd14_caff2da9","updated":"2015-03-12 01:24:19.000000000","message":"Thank you for catching this.","commit_id":"c0f9c90db16bbae46df107a93788057e72f56e63"}]}
