)]}'
{"cinder/tests/targets/test_base_iscsi_driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(TestBaseISCSITargetDriver, self).setUp()"},{"line_number":35,"context_line":"        self.configuration \u003d conf.Configuration(None)"},{"line_number":36,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":37,"context_line":"        self.fake_id_2 \u003d \u0027ed2c2222-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.target \u003d fake.FakeTarget(root_helper\u003dutils.get_root_helper(),"},{"line_number":39,"context_line":"                                      configuration\u003dself.configuration)"},{"line_number":40,"context_line":"        self.testvol_1 \u003d\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_4f081428","line":37,"updated":"2015-02-12 11:21:32.000000000","message":"Same comments as for test_lio_driver.py","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(TestBaseISCSITargetDriver, self).setUp()"},{"line_number":35,"context_line":"        self.configuration \u003d conf.Configuration(None)"},{"line_number":36,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":37,"context_line":"        self.fake_id_2 \u003d \u0027ed2c2222-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.target \u003d fake.FakeTarget(root_helper\u003dutils.get_root_helper(),"},{"line_number":39,"context_line":"                                      configuration\u003dself.configuration)"},{"line_number":40,"context_line":"        self.testvol_1 \u003d\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_a770cb08","line":37,"in_reply_to":"da86d52c_4f081428","updated":"2015-02-12 19:37:48.000000000","message":"Done","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"}],"cinder/tests/targets/test_lio_driver.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d15cd0c157f273d8f8c942776507cdab1139a180","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                  \u0027volume-%s 0\u0027 % self.fake_id_2,"},{"line_number":55,"context_line":"             \u0027provider_auth\u0027: \u0027CHAP c76370d66b 2FE0CQ8J196R\u0027,"},{"line_number":56,"context_line":"             \u0027provider_geometry\u0027: \u0027512 512\u0027,"},{"line_number":57,"context_line":"             \u0027created_at\u0027: timeutils.utcnow(),"},{"line_number":58,"context_line":"             \u0027host\u0027: \u0027fake_host@lvm#lvm\u0027}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_get_target(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_ef5020d6","line":57,"range":{"start_line":57,"start_character":27,"end_line":57,"end_character":45},"updated":"2015-01-30 15:33:37.000000000","message":"Can we use `datetime.datetime.utcnow()` instead `timeutils`?","commit_id":"dafbeb18658cd1af6112664a344aa6525644e121"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"4e09b0ec670a427d99e3ef2eeacfbb741949dd18","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                  \u0027volume-%s 0\u0027 % self.fake_id_2,"},{"line_number":55,"context_line":"             \u0027provider_auth\u0027: \u0027CHAP c76370d66b 2FE0CQ8J196R\u0027,"},{"line_number":56,"context_line":"             \u0027provider_geometry\u0027: \u0027512 512\u0027,"},{"line_number":57,"context_line":"             \u0027created_at\u0027: timeutils.utcnow(),"},{"line_number":58,"context_line":"             \u0027host\u0027: \u0027fake_host@lvm#lvm\u0027}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_get_target(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_2f9dd80b","line":57,"in_reply_to":"fa81d914_ef5020d6","updated":"2015-01-30 15:50:45.000000000","message":"Thank you for the review.\n\nCould you let me know the difference of these? I copied this code simply from test_tgt_driver.py. I found there are many places calling timeutils.utcnow(), so I would like to know the reason of this proposal.","commit_id":"dafbeb18658cd1af6112664a344aa6525644e121"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d15cd0c157f273d8f8c942776507cdab1139a180","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        def _fake_execute(*args, **kwargs):"},{"line_number":101,"context_line":"            return \u0027\u0027, \u0027\u0027"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.stubs.Set(utils,"},{"line_number":104,"context_line":"                       \u0027execute\u0027,"},{"line_number":105,"context_line":"                       _fake_execute)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_cfbc3c09","line":103,"updated":"2015-01-30 15:33:37.000000000","message":"Please use `mock` instead `mox` and `stubs`","commit_id":"dafbeb18658cd1af6112664a344aa6525644e121"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"a50bae9110cda39e4b71c286c78b006484ca43a5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        def _fake_execute(*args, **kwargs):"},{"line_number":101,"context_line":"            return \u0027\u0027, \u0027\u0027"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.stubs.Set(utils,"},{"line_number":104,"context_line":"                       \u0027execute\u0027,"},{"line_number":105,"context_line":"                       _fake_execute)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_d4fc1441","line":103,"in_reply_to":"fa81d914_4f3a0ce8","updated":"2015-02-03 06:08:50.000000000","message":"Done","commit_id":"dafbeb18658cd1af6112664a344aa6525644e121"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"4e09b0ec670a427d99e3ef2eeacfbb741949dd18","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        def _fake_execute(*args, **kwargs):"},{"line_number":101,"context_line":"            return \u0027\u0027, \u0027\u0027"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.stubs.Set(utils,"},{"line_number":104,"context_line":"                       \u0027execute\u0027,"},{"line_number":105,"context_line":"                       _fake_execute)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_4f3a0ce8","line":103,"in_reply_to":"fa81d914_cfbc3c09","updated":"2015-01-30 15:50:45.000000000","message":"I also copied(little bit changed) this from test_tgt_driver.py. Therefore this test is using stub(but not using \u0027mox\u0027).\n\nDo you think which is better in this case? keeping original test code or replacing it to mock.\n\nI implemented all new tests using mock.","commit_id":"dafbeb18658cd1af6112664a344aa6525644e121"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.configuration.append_config_values \u003d mock.Mock(return_value\u003d0)"},{"line_number":33,"context_line":"        self.configuration.safe_get \u003d mock.Mock(side_effect\u003dself.fake_safe_get)"},{"line_number":34,"context_line":"        self.configuration.iscsi_ip_address \u003d \u002710.9.8.7\u0027"},{"line_number":35,"context_line":"        self.fake_volumes_dir \u003d tempfile.mkdtemp()"},{"line_number":36,"context_line":"        self.iscsi_target_prefix \u003d \u0027iqn.2010-10.org.openstack:\u0027"},{"line_number":37,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.fake_id_2 \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_948b05c2","line":35,"updated":"2015-02-12 11:21:32.000000000","message":"Please, add cleanup and delete fake_volumes_dir after each test run","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.configuration.append_config_values \u003d mock.Mock(return_value\u003d0)"},{"line_number":33,"context_line":"        self.configuration.safe_get \u003d mock.Mock(side_effect\u003dself.fake_safe_get)"},{"line_number":34,"context_line":"        self.configuration.iscsi_ip_address \u003d \u002710.9.8.7\u0027"},{"line_number":35,"context_line":"        self.fake_volumes_dir \u003d tempfile.mkdtemp()"},{"line_number":36,"context_line":"        self.iscsi_target_prefix \u003d \u0027iqn.2010-10.org.openstack:\u0027"},{"line_number":37,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.fake_id_2 \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_4349be5e","line":35,"in_reply_to":"da86d52c_948b05c2","updated":"2015-02-12 19:37:48.000000000","message":"I noticed actual temporary directory was unnecessary because all execute are mocked in LIO test cases and there is no open() in LIO target.\nSo I will replace this to self.fake_volumes_dir \u003d \u0027/tmp/tmpfile\u0027 or something like that.","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.configuration.iscsi_ip_address \u003d \u002710.9.8.7\u0027"},{"line_number":35,"context_line":"        self.fake_volumes_dir \u003d tempfile.mkdtemp()"},{"line_number":36,"context_line":"        self.iscsi_target_prefix \u003d \u0027iqn.2010-10.org.openstack:\u0027"},{"line_number":37,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.fake_id_2 \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"},{"line_number":39,"context_line":"        with mock.patch.object(lio.LioAdm, \u0027_verify_rtstool\u0027):"},{"line_number":40,"context_line":"            self.target \u003d lio.LioAdm(root_helper\u003dutils.get_root_helper(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_f47a81b8","line":37,"updated":"2015-02-12 11:21:32.000000000","message":"fake_project_id","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        self.configuration.iscsi_ip_address \u003d \u002710.9.8.7\u0027"},{"line_number":35,"context_line":"        self.fake_volumes_dir \u003d tempfile.mkdtemp()"},{"line_number":36,"context_line":"        self.iscsi_target_prefix \u003d \u0027iqn.2010-10.org.openstack:\u0027"},{"line_number":37,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.fake_id_2 \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"},{"line_number":39,"context_line":"        with mock.patch.object(lio.LioAdm, \u0027_verify_rtstool\u0027):"},{"line_number":40,"context_line":"            self.target \u003d lio.LioAdm(root_helper\u003dutils.get_root_helper(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_0759978d","line":37,"in_reply_to":"da86d52c_f47a81b8","updated":"2015-02-12 19:37:48.000000000","message":"Done","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.fake_volumes_dir \u003d tempfile.mkdtemp()"},{"line_number":36,"context_line":"        self.iscsi_target_prefix \u003d \u0027iqn.2010-10.org.openstack:\u0027"},{"line_number":37,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.fake_id_2 \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"},{"line_number":39,"context_line":"        with mock.patch.object(lio.LioAdm, \u0027_verify_rtstool\u0027):"},{"line_number":40,"context_line":"            self.target \u003d lio.LioAdm(root_helper\u003dutils.get_root_helper(),"},{"line_number":41,"context_line":"                                     configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_94606502","line":38,"updated":"2015-02-12 11:21:32.000000000","message":"fake_volume_id.","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.fake_volumes_dir \u003d tempfile.mkdtemp()"},{"line_number":36,"context_line":"        self.iscsi_target_prefix \u003d \u0027iqn.2010-10.org.openstack:\u0027"},{"line_number":37,"context_line":"        self.fake_id_1 \u003d \u0027ed2c1fd4-5fc0-11e4-aa15-123b93f75cba\u0027"},{"line_number":38,"context_line":"        self.fake_id_2 \u003d \u002783c2e877-feed-46be-8435-77884fe55b45\u0027"},{"line_number":39,"context_line":"        with mock.patch.object(lio.LioAdm, \u0027_verify_rtstool\u0027):"},{"line_number":40,"context_line":"            self.target \u003d lio.LioAdm(root_helper\u003dutils.get_root_helper(),"},{"line_number":41,"context_line":"                                     configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_275cdb7c","line":38,"in_reply_to":"da86d52c_94606502","updated":"2015-02-12 19:37:48.000000000","message":"Done","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.target.db \u003d mock.MagicMock("},{"line_number":45,"context_line":"            volume_get\u003dlambda x, y: {\u0027provider_auth\u0027: \u0027IncomingUser foo bar\u0027})"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.testvol_1 \u003d\\"},{"line_number":48,"context_line":"            {\u0027project_id\u0027: self.fake_id_1,"},{"line_number":49,"context_line":"             \u0027name\u0027: \u0027volume-%s\u0027 % self.fake_id_2,"},{"line_number":50,"context_line":"             \u0027size\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_94b22592","line":47,"updated":"2015-02-12 11:21:32.000000000","message":"\u0027self.testvol\u0027 or \u0027self.test_vol\u0027 will be good for me. There is no self.testvol _2","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.target.db \u003d mock.MagicMock("},{"line_number":45,"context_line":"            volume_get\u003dlambda x, y: {\u0027provider_auth\u0027: \u0027IncomingUser foo bar\u0027})"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.testvol_1 \u003d\\"},{"line_number":48,"context_line":"            {\u0027project_id\u0027: self.fake_id_1,"},{"line_number":49,"context_line":"             \u0027name\u0027: \u0027volume-%s\u0027 % self.fake_id_2,"},{"line_number":50,"context_line":"             \u0027size\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_47562f5d","line":47,"in_reply_to":"da86d52c_94b22592","updated":"2015-02-12 19:37:48.000000000","message":"Done","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"}],"cinder/tests/targets/test_tgt_driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.stubs.Set(self.configuration, \u0027safe_get\u0027, self.fake_safe_get)"},{"line_number":42,"context_line":"        self.target \u003d tgt.TgtAdm(root_helper\u003dutils.get_root_helper(),"},{"line_number":43,"context_line":"                                 configuration\u003dself.configuration)"},{"line_number":44,"context_line":"        self.testvol_1 \u003d\\"},{"line_number":45,"context_line":"            {\u0027project_id\u0027: self.fake_id_1,"},{"line_number":46,"context_line":"             \u0027name\u0027: \u0027volume-%s\u0027 % self.fake_id_2,"},{"line_number":47,"context_line":"             \u0027size\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_54d0adc8","line":44,"updated":"2015-02-12 11:21:32.000000000","message":"We\u0027ve got only one stub volume so I propose to rename it to \u0027testvol\u0027 since we are here. I won\u0027t block this patch it it will be done later","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.stubs.Set(self.configuration, \u0027safe_get\u0027, self.fake_safe_get)"},{"line_number":42,"context_line":"        self.target \u003d tgt.TgtAdm(root_helper\u003dutils.get_root_helper(),"},{"line_number":43,"context_line":"                                 configuration\u003dself.configuration)"},{"line_number":44,"context_line":"        self.testvol_1 \u003d\\"},{"line_number":45,"context_line":"            {\u0027project_id\u0027: self.fake_id_1,"},{"line_number":46,"context_line":"             \u0027name\u0027: \u0027volume-%s\u0027 % self.fake_id_2,"},{"line_number":47,"context_line":"             \u0027size\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_e7656345","line":44,"in_reply_to":"da86d52c_54d0adc8","updated":"2015-02-12 19:37:48.000000000","message":"Done","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"}],"cinder/volume/targets/iscsi.py":[{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"0ba1a763a4c6f4263a409b61f34eca64cb0c29ba","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            self.configuration.iscsi_ip_address, tid, iscsi_name, lun)"},{"line_number":183,"context_line":"        LOG.debug(\u0027Set provider_location to: %s\u0027, data[\u0027location\u0027])"},{"line_number":184,"context_line":"        data[\u0027auth\u0027] \u003d self._iscsi_authentication("},{"line_number":185,"context_line":"            \u0027CHAP\u0027, *chap_auth)"},{"line_number":186,"context_line":"        return data"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def remove_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_07eea588","line":185,"updated":"2015-01-21 22:15:45.000000000","message":"Nit: Can we change \u0027CHAP\u0027 to something more descriptive like IncomingCHAP, InitiatorCHAP etc ?","commit_id":"b397e3bef8e392e91ca12feb3b99cf0fd46ae1bd"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"c1b46f38268a8e6307b2e0a27ef7f551fabb497c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            self.configuration.iscsi_ip_address, tid, iscsi_name, lun)"},{"line_number":183,"context_line":"        LOG.debug(\u0027Set provider_location to: %s\u0027, data[\u0027location\u0027])"},{"line_number":184,"context_line":"        data[\u0027auth\u0027] \u003d self._iscsi_authentication("},{"line_number":185,"context_line":"            \u0027CHAP\u0027, *chap_auth)"},{"line_number":186,"context_line":"        return data"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def remove_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_56ae4f86","line":185,"in_reply_to":"1a930d6b_07eea588","updated":"2015-01-23 17:17:26.000000000","message":"Do you have specific reason or merit to change \u0027CHAP\u0027? If we change this now, this affect existing user because their DB already has \u0027CHAP\u0027 keyword in provider_location.","commit_id":"b397e3bef8e392e91ca12feb3b99cf0fd46ae1bd"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"060502715fe1aac850457fea38cd355b9b560604","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            self.configuration.iscsi_ip_address, tid, iscsi_name, lun)"},{"line_number":183,"context_line":"        LOG.debug(\u0027Set provider_location to: %s\u0027, data[\u0027location\u0027])"},{"line_number":184,"context_line":"        data[\u0027auth\u0027] \u003d self._iscsi_authentication("},{"line_number":185,"context_line":"            \u0027CHAP\u0027, *chap_auth)"},{"line_number":186,"context_line":"        return data"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def remove_export(self, context, volume):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_448befc2","line":185,"in_reply_to":"1a930d6b_56ae4f86","updated":"2015-01-23 23:28:20.000000000","message":"No, you are correct on this one.","commit_id":"b397e3bef8e392e91ca12feb3b99cf0fd46ae1bd"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"ffb7b5be4859ca57ee36d5f4bb9aaaa428e44742","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # should clean this all up at some point in the future"},{"line_number":177,"context_line":"        tid \u003d self.create_iscsi_target(iscsi_name,"},{"line_number":178,"context_line":"                                       iscsi_target,"},{"line_number":179,"context_line":"                                       0,"},{"line_number":180,"context_line":"                                       volume_path,"},{"line_number":181,"context_line":"                                       chap_auth)"},{"line_number":182,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_1770e009","line":179,"updated":"2015-02-06 02:07:20.000000000","message":"lun, not 0","commit_id":"155ba6c9af60e94a32484996ee567375a8c35e45"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"8f38eb7c926f2d5a7f652b5f0cbb74edf6ef7f6f","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # should clean this all up at some point in the future"},{"line_number":177,"context_line":"        tid \u003d self.create_iscsi_target(iscsi_name,"},{"line_number":178,"context_line":"                                       iscsi_target,"},{"line_number":179,"context_line":"                                       0,"},{"line_number":180,"context_line":"                                       volume_path,"},{"line_number":181,"context_line":"                                       chap_auth)"},{"line_number":182,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_564a27ad","line":179,"in_reply_to":"da86d52c_1770e009","updated":"2015-02-08 06:45:47.000000000","message":"Done","commit_id":"155ba6c9af60e94a32484996ee567375a8c35e45"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"ffb7b5be4859ca57ee36d5f4bb9aaaa428e44742","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            return"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        # NOTE: For TgtAdm case volume[\u0027id\u0027] is the ONLY param we need"},{"line_number":214,"context_line":"        self.remove_iscsi_target(iscsi_target, 0, volume[\u0027id\u0027], volume[\u0027name\u0027])"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def ensure_export(self, context, volume, volume_path):"},{"line_number":217,"context_line":"        \"\"\"Recreates an export for a logical volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_571fb8b6","line":214,"updated":"2015-02-06 02:07:20.000000000","message":"lun id becomes hardcoded to 0 here. Same problem as line 179","commit_id":"155ba6c9af60e94a32484996ee567375a8c35e45"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"8f38eb7c926f2d5a7f652b5f0cbb74edf6ef7f6f","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            return"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        # NOTE: For TgtAdm case volume[\u0027id\u0027] is the ONLY param we need"},{"line_number":214,"context_line":"        self.remove_iscsi_target(iscsi_target, 0, volume[\u0027id\u0027], volume[\u0027name\u0027])"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def ensure_export(self, context, volume, volume_path):"},{"line_number":217,"context_line":"        \"\"\"Recreates an export for a logical volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_76c64b18","line":214,"in_reply_to":"da86d52c_571fb8b6","updated":"2015-02-08 06:45:47.000000000","message":"Done","commit_id":"155ba6c9af60e94a32484996ee567375a8c35e45"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            # this export has already been removed"},{"line_number":222,"context_line":"            self.show_target(iscsi_target, iqn\u003diqn)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        except Exception:"},{"line_number":225,"context_line":"            LOG.info(_LI(\"Skipping remove_export. No iscsi_target \""},{"line_number":226,"context_line":"                         \"is presently exported for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":227,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_74b211e6","line":224,"updated":"2015-02-12 11:21:32.000000000","message":"I\u0027m trying to not catch such general exception but after look throw the code it seams reasonable here.","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            # this export has already been removed"},{"line_number":222,"context_line":"            self.show_target(iscsi_target, iqn\u003diqn)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        except Exception:"},{"line_number":225,"context_line":"            LOG.info(_LI(\"Skipping remove_export. No iscsi_target \""},{"line_number":226,"context_line":"                         \"is presently exported for volume: %s\"), volume[\u0027id\u0027])"},{"line_number":227,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_03d34604","line":224,"in_reply_to":"da86d52c_74b211e6","updated":"2015-02-12 19:37:48.000000000","message":"In the show_target exception.InvalidParameterValue, exception.NotFound() or other exceptions from self._get_target() might be raised. So in my understanding, we can\u0027t define specific exception catch here unfortunately.","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"}],"cinder/volume/targets/lio.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"408a8d46593436b53115674ee1c1df8a045a6b9a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            if volume_info[\u0027provider_auth\u0027]:"},{"line_number":50,"context_line":"                return tuple(volume_info[\u0027provider_auth\u0027].split(\u0027 \u0027, 3)[1:])"},{"line_number":51,"context_line":"        except exception.NotFound:"},{"line_number":52,"context_line":"            LOG.debug(\u0027Failed to get CHAP auth from DB for %s\u0027 % vol_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _verify_rtstool(self):"},{"line_number":55,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_54818df9","line":52,"updated":"2015-02-12 11:21:32.000000000","message":"Please, replace % \u003d\u003e ,  according to the Logging guidelines","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"11a131548201edcd94a228fb17ba4aa5ab5d772c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            if volume_info[\u0027provider_auth\u0027]:"},{"line_number":50,"context_line":"                return tuple(volume_info[\u0027provider_auth\u0027].split(\u0027 \u0027, 3)[1:])"},{"line_number":51,"context_line":"        except exception.NotFound:"},{"line_number":52,"context_line":"            LOG.debug(\u0027Failed to get CHAP auth from DB for %s\u0027 % vol_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _verify_rtstool(self):"},{"line_number":55,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_2785bbce","line":52,"in_reply_to":"da86d52c_54818df9","updated":"2015-02-12 19:37:48.000000000","message":"Done. Could you let me know the URL of this? I couldn\u0027t find this reference.","commit_id":"69ee9e0baff87453317f146228fe2ec3335d8434"}],"cinder/volume/targets/tgt.py":[{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"0ba1a763a4c6f4263a409b61f34eca64cb0c29ba","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            volume_conf \u003d self.VOLUME_CONF % (name, path, write_cache)"},{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            chap_str \u003d \u0027incominguser %s %s\u0027 % chap_auth"},{"line_number":167,"context_line":"            volume_conf \u003d self.VOLUME_CONF_WITH_CHAP_AUTH % (name,"},{"line_number":168,"context_line":"                                                             path, chap_str,"},{"line_number":169,"context_line":"                                                             write_cache)"},{"line_number":170,"context_line":"        LOG.debug(\u0027Creating iscsi_target for: %s\u0027, vol_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_e7dd1944","line":167,"updated":"2015-01-21 22:15:45.000000000","message":"Will break things for anyone upgrading from an older release that happened to use IET target, but I do not know if this is a real issue","commit_id":"b397e3bef8e392e91ca12feb3b99cf0fd46ae1bd"},{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"060502715fe1aac850457fea38cd355b9b560604","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            volume_conf \u003d self.VOLUME_CONF % (name, path, write_cache)"},{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            chap_str \u003d \u0027incominguser %s %s\u0027 % chap_auth"},{"line_number":167,"context_line":"            volume_conf \u003d self.VOLUME_CONF_WITH_CHAP_AUTH % (name,"},{"line_number":168,"context_line":"                                                             path, chap_str,"},{"line_number":169,"context_line":"                                                             write_cache)"},{"line_number":170,"context_line":"        LOG.debug(\u0027Creating iscsi_target for: %s\u0027, vol_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_44b20f95","line":167,"in_reply_to":"1a930d6b_53c6664a","updated":"2015-01-23 23:28:20.000000000","message":"IET is removed from cinder (at least currently). I think it is expected that everyone will transition from IET to TGT when upgrading.","commit_id":"b397e3bef8e392e91ca12feb3b99cf0fd46ae1bd"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"c1b46f38268a8e6307b2e0a27ef7f551fabb497c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            volume_conf \u003d self.VOLUME_CONF % (name, path, write_cache)"},{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            chap_str \u003d \u0027incominguser %s %s\u0027 % chap_auth"},{"line_number":167,"context_line":"            volume_conf \u003d self.VOLUME_CONF_WITH_CHAP_AUTH % (name,"},{"line_number":168,"context_line":"                                                             path, chap_str,"},{"line_number":169,"context_line":"                                                             write_cache)"},{"line_number":170,"context_line":"        LOG.debug(\u0027Creating iscsi_target for: %s\u0027, vol_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_53c6664a","line":167,"in_reply_to":"1a930d6b_e7dd1944","updated":"2015-01-23 17:17:26.000000000","message":"I think the person who will implement IET target must care chap string in own _get_target_chap_auth() or create_iscsi_target(). If it takes care properly in these methonds, I think the backward compatibility is not broken.","commit_id":"b397e3bef8e392e91ca12feb3b99cf0fd46ae1bd"}]}
