)]}'
{"cinder/tests/unit/targets/test_base_iscsi_driver.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"9b60448895737fc9113fd4b15b969a5a7cbdde21","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                         self.target._get_target_chap_auth(ctxt,"},{"line_number":166,"context_line":"                                                           self.test_vol))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def test_write_configfile(self):"},{"line_number":169,"context_line":"        with mock.patch.object(tempfile, \u0027NamedTemporaryFile\u0027):"},{"line_number":170,"context_line":"            with mock.patch.object(os, \u0027open\u0027) as mock_open, \\"},{"line_number":171,"context_line":"                    mock.patch.object(os, \u0027fdatasync\u0027), \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_c4e022cf","line":168,"updated":"2015-11-23 16:42:43.000000000","message":"Is there a reason not to use the @patch decorator here?  Would just help with the long line here","commit_id":"982d205c2cb76c30cb4a476512933a0d0394726b"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"ec20380bdc528d336599cc634ec06e54850c034f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                         self.target._get_target_chap_auth(ctxt,"},{"line_number":166,"context_line":"                                                           self.test_vol))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def test_write_configfile(self):"},{"line_number":169,"context_line":"        with mock.patch.object(tempfile, \u0027NamedTemporaryFile\u0027):"},{"line_number":170,"context_line":"            with mock.patch.object(os, \u0027open\u0027) as mock_open, \\"},{"line_number":171,"context_line":"                    mock.patch.object(os, \u0027fdatasync\u0027), \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_9e82c1c7","line":168,"in_reply_to":"ba8a016a_c4e022cf","updated":"2015-11-24 12:32:33.000000000","message":"Ah, yes. @patch decorator is more better.\nI tried some mock patterns here and just forgot to return using decorator...","commit_id":"982d205c2cb76c30cb4a476512933a0d0394726b"}],"cinder/utils.py":[{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4b615c83ebd3207cfee35c52913893d21be3bcc8","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            os.rename(tempname, os.path.join(directory, filename))"},{"line_number":485,"context_line":"            # Fsync the directory to ensure the rename hits the disk."},{"line_number":486,"context_line":"            os.fsync(dirfd)"},{"line_number":487,"context_line":"    except OSError as e:"},{"line_number":488,"context_line":"        LOG.debug(\u0027Exception writing persistence file: %s\u0027, e)"},{"line_number":489,"context_line":"        if os.path.isfile(tempname):"},{"line_number":490,"context_line":"            os.unlink(tempname)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_52470e1d","line":487,"updated":"2015-12-01 22:45:45.000000000","message":"Shouldn\u0027t we be doing more than just a debug log if we can\u0027t write to the persistence file? Seems like we\u0027d want to re-raise the exception.","commit_id":"397ad98bb6864472dde20bee374b5609ac1d0e2c"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"61bab12a2ef3d457afdbf5080aa8f457cea42a4d","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            os.rename(tempname, os.path.join(directory, filename))"},{"line_number":485,"context_line":"            # Fsync the directory to ensure the rename hits the disk."},{"line_number":486,"context_line":"            os.fsync(dirfd)"},{"line_number":487,"context_line":"    except OSError as e:"},{"line_number":488,"context_line":"        LOG.debug(\u0027Exception writing persistence file: %s\u0027, e)"},{"line_number":489,"context_line":"        if os.path.isfile(tempname):"},{"line_number":490,"context_line":"            os.unlink(tempname)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_1ba727be","line":487,"in_reply_to":"9a8ffd7b_52470e1d","updated":"2015-12-02 19:22:39.000000000","message":"I agree on it. I think this should be log.error since admin should check the reason of this exception.","commit_id":"397ad98bb6864472dde20bee374b5609ac1d0e2c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d164c68d2ca0e4bfe71734fff58a926c732de1d7","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            tf.write(data.encode(\u0027utf-8\u0027))"},{"line_number":477,"context_line":"            tf.flush()"},{"line_number":478,"context_line":"            os.fdatasync(tf.fileno())"},{"line_number":479,"context_line":"            tf.close()"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"            # Fsync the directory to ensure the fact of the existence of"},{"line_number":482,"context_line":"            # the temp file hits the disk."}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_9055241f","line":479,"updated":"2015-12-03 02:19:36.000000000","message":"I believe exiting the with block will result in close being called, but I guess no harm in explicitly doing it here.","commit_id":"0d47c8ec3a07f3311ed9dd3d54201b7c2b1d7292"}],"cinder/volume/targets/iscsi.py":[{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"07846fc113d15eb3f067e61d068324f0b28b9d8a","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"            # write data to temporary file"},{"line_number":350,"context_line":"            with tempfile.NamedTemporaryFile(prefix\u003dvolume_id,"},{"line_number":351,"context_line":"                                             dir\u003dvolumes_dir,"},{"line_number":352,"context_line":"                                             delete\u003dFalse) as tf:"},{"line_number":353,"context_line":"                tempname \u003d tf.name"},{"line_number":354,"context_line":"                tf.write(volume_conf)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_40e6c844","line":351,"updated":"2015-11-20 05:16:09.000000000","message":"Really think this would be a great time to give every iscsi helper it\u0027s own base directory","commit_id":"118ca60e85a2bf606e32a4352f7ac3759c4de38f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"9b6b4c5db80607d9ebc5365775370f6b4cd006e8","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"            # write data to temporary file"},{"line_number":350,"context_line":"            with tempfile.NamedTemporaryFile(prefix\u003dvolume_id,"},{"line_number":351,"context_line":"                                             dir\u003dvolumes_dir,"},{"line_number":352,"context_line":"                                             delete\u003dFalse) as tf:"},{"line_number":353,"context_line":"                tempname \u003d tf.name"},{"line_number":354,"context_line":"                tf.write(volume_conf)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_e4cee2b6","line":351,"in_reply_to":"ba8a016a_40e6c844","updated":"2015-11-20 11:32:32.000000000","message":"Seems good idea. I believe config enhancement will be done by Eric. https://etherpad.openstack.org/p/mitaka-cinder-contributor-meetup [Config file weirdness]","commit_id":"118ca60e85a2bf606e32a4352f7ac3759c4de38f"}],"cinder/volume/targets/tgt.py":[{"author":{"_account_id":12088,"name":"Anish Bhatt","email":"anish.7@gmail.com","username":"anish"},"change_message_id":"07846fc113d15eb3f067e61d068324f0b28b9d8a","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.write_configfile(vol_id, volumes_dir, volume_conf)"},{"line_number":169,"context_line":"        LOG.debug((\u0027Created volume path %(vp)s,\\n\u0027"},{"line_number":170,"context_line":"                   \u0027content: %(vc)s\u0027),"},{"line_number":171,"context_line":"                  {\u0027vp\u0027: volume_path, \u0027vc\u0027: volume_conf})"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        old_persist_file \u003d None"},{"line_number":174,"context_line":"        old_name \u003d kwargs.get(\u0027old_name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_408fa874","line":171,"updated":"2015-11-20 05:16:09.000000000","message":"volume_path and this Log line is duplicated in cxt and tgt, maybe we can reduce code lines by moving both to iscsi.py ?","commit_id":"118ca60e85a2bf606e32a4352f7ac3759c4de38f"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"9b6b4c5db80607d9ebc5365775370f6b4cd006e8","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        self.write_configfile(vol_id, volumes_dir, volume_conf)"},{"line_number":169,"context_line":"        LOG.debug((\u0027Created volume path %(vp)s,\\n\u0027"},{"line_number":170,"context_line":"                   \u0027content: %(vc)s\u0027),"},{"line_number":171,"context_line":"                  {\u0027vp\u0027: volume_path, \u0027vc\u0027: volume_conf})"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        old_persist_file \u003d None"},{"line_number":174,"context_line":"        old_name \u003d kwargs.get(\u0027old_name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_0409a6dd","line":171,"in_reply_to":"ba8a016a_408fa874","updated":"2015-11-20 11:32:32.000000000","message":"Better to propose separate patch to fix it?","commit_id":"118ca60e85a2bf606e32a4352f7ac3759c4de38f"}]}
