)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"f707e7eae6e50cb2d72e59b20f258d530981f895","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jordan Pittier \u003cjordan.pittier@scality.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-17 11:48:23 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rework the Scality SOFS driver to use the RemoteFS class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is big but the logic is simple. The previous version of this"},{"line_number":10,"context_line":"driver reimplemented most of what is now in the RemoteFS base class. SOFS"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_3c9dc666","line":7,"updated":"2015-07-30 06:31:06.000000000","message":"It seems more than 50 chars?\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"e3dc171fd12c12e9f14a14d1e6f003229ec70c8d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e0da5f00dbde309177b1bd837c38633acb31675a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jordan Pittier \u003cjordan.pittier@scality.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-17 11:48:23 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rework the Scality SOFS driver to use the RemoteFS class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is big but the logic is simple. The previous version of this"},{"line_number":10,"context_line":"driver reimplemented most of what is now in the RemoteFS base class. SOFS"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a50d1a3_c87f3c16","line":7,"in_reply_to":"3a50d1a3_3c9dc666","updated":"2015-07-30 08:14:25.000000000","message":"The link you provide says \"The first line should be limited to 50 characters\". The word \"should\" here is important. \"Should\" is different than \u0027must\u0027. My commit line is 57 char long, I think I am not pushing it too far.\n\nAlso, a lot of commit title in Cinder are more than 50 char in lenght, but you didn\"t -1 all of them. Why ?","commit_id":"e3dc171fd12c12e9f14a14d1e6f003229ec70c8d"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"033e9db5c5b4373dbe425f1eaa8e2c5d3533be17","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Rework Scality SOFS driver to use RemoteFS class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is big but the logic is simple. The previous version of"},{"line_number":10,"context_line":"this driver reimplemented most of what is now in the RemoteFS base"},{"line_number":11,"context_line":"class. SOFS stands for Scale Out FileSystem and is based on FUSE, so"},{"line_number":12,"context_line":"it\u0027s only natural to leverage the RemoteFS class."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1a4dcd0f_c0fdae09","line":10,"updated":"2015-08-14 14:30:14.000000000","message":"Is this word \"reimplemented\" right?","commit_id":"98b3d26838d54bb97765b0ded406331498d2d5ca"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9d343d9291a16980c8614543abd6cceb45bc9b1d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Rework Scality SOFS driver to use RemoteFS class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change is big but the logic is simple. The previous version of"},{"line_number":10,"context_line":"this driver reimplemented most of what is now in the RemoteFS base"},{"line_number":11,"context_line":"class. SOFS stands for Scale Out FileSystem and is based on FUSE, so"},{"line_number":12,"context_line":"it\u0027s only natural to leverage the RemoteFS class."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1a4dcd0f_60c05a7d","line":10,"in_reply_to":"1a4dcd0f_c0fdae09","updated":"2015-08-14 14:34:17.000000000","message":"That appears correct to me.","commit_id":"98b3d26838d54bb97765b0ded406331498d2d5ca"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"c8b6378a997b4f89c3ecdbed09f95a1a91da686b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"this driver reimplemented most of what is now in the RemoteFS base"},{"line_number":11,"context_line":"class. SOFS stands for Scale Out FileSystem and is based on FUSE, so"},{"line_number":12,"context_line":"it\u0027s only natural to leverage the RemoteFS class."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: I0a0a3f2db4c9ad9b930b2a9f096c128d28e9566b"},{"line_number":15,"context_line":"Change-Id: I26935061e860a477f98a61a935e67281a3a6f48e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"fa1b9901_d040c4a7","line":13,"updated":"2015-08-25 14:24:22.000000000","message":"Did this need a blueprint since it is, as you admitted above, a larger change? This change technically fits the second case of when you need a bp here: https://wiki.openstack.org/wiki/Cinder/how-to-contribute-new-feature","commit_id":"6c67625fa0bde7fe820da4345e80af8eb3c31d1e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"63656229840861c95fde268273c697340d9e235b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"this driver reimplemented most of what is now in the RemoteFS base"},{"line_number":11,"context_line":"class. SOFS stands for Scale Out FileSystem and is based on FUSE, so"},{"line_number":12,"context_line":"it\u0027s only natural to leverage the RemoteFS class."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: I0a0a3f2db4c9ad9b930b2a9f096c128d28e9566b"},{"line_number":15,"context_line":"Change-Id: I26935061e860a477f98a61a935e67281a3a6f48e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"fa1b9901_19798782","line":13,"in_reply_to":"fa1b9901_d040c4a7","updated":"2015-08-25 15:01:06.000000000","message":"I understand your concern. But I don\"t feel I need a blueprint because this touches only one driver, that is already in tree, for which there is a working CI. \n\n\nThis change has a lot of lines changed, but this is not a criteria to warrant a blue print, at least as far as I know. I want to be a good citizen with this driver, to reuse the common RemoteFS base class, and avoid code/feature duplication. There\u0027s 0 feature added with this.\n\n\nLet me turn the question the other way: if I create a blueprint, what do you want to discuss there ? Whether it will break some API ? Whether there\u0027s an alternative ? A security impact ?\n\n\nI already got some sort of positive reviews from core dev on this patch (+2), I\u0027d like you to please reconsider your -1.","commit_id":"6c67625fa0bde7fe820da4345e80af8eb3c31d1e"}],"cinder/tests/unit/test_scality.py":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"9b308d836ae7c4ddce28da4a5a9ce362be2612f1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Unit tests for the Scality SOFS Volume Driver."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"import errno"},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_ef619b12","line":20,"updated":"2015-07-31 13:16:30.000000000","message":"Did you add this in for debugging? There shouldn\u0027t be any logging going on in unit tests so this should be removed. Thanks!","commit_id":"766eb692e09601bfa88f38f3113067ae89dd4ce0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e1f8a7b4abce2e300db87511a72ff23c80a9cf03","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Unit tests for the Scality SOFS Volume Driver."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"import errno"},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_4d4a1457","line":20,"in_reply_to":"3a50d1a3_ef619b12","updated":"2015-07-31 14:20:48.000000000","message":"Absolutely ! Nice catch ! Going to remove that one.","commit_id":"766eb692e09601bfa88f38f3113067ae89dd4ce0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"9b308d836ae7c4ddce28da4a5a9ce362be2612f1","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder.volume import configuration as conf"},{"line_number":31,"context_line":"import cinder.volume.drivers.scality as driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_FAKE_VOLUME \u003d {\u0027name\u0027: \u0027volume-a79d463e-1fd5-11e5-a6ff-5b81bfee8544\u0027,"},{"line_number":36,"context_line":"                \u0027id\u0027: \u0027a79d463e-1fd5-11e5-a6ff-5b81bfee8544\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_af6b93f0","line":33,"updated":"2015-07-31 13:16:30.000000000","message":"Same comment as above.","commit_id":"766eb692e09601bfa88f38f3113067ae89dd4ce0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e1f8a7b4abce2e300db87511a72ff23c80a9cf03","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from cinder.volume import configuration as conf"},{"line_number":31,"context_line":"import cinder.volume.drivers.scality as driver"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_FAKE_VOLUME \u003d {\u0027name\u0027: \u0027volume-a79d463e-1fd5-11e5-a6ff-5b81bfee8544\u0027,"},{"line_number":36,"context_line":"                \u0027id\u0027: \u0027a79d463e-1fd5-11e5-a6ff-5b81bfee8544\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_2d76a8a3","line":33,"in_reply_to":"3a50d1a3_af6b93f0","updated":"2015-07-31 14:20:48.000000000","message":"Same, thanks a lot :)","commit_id":"766eb692e09601bfa88f38f3113067ae89dd4ce0"}],"cinder/volume/drivers/scality.py":[{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"f707e7eae6e50cb2d72e59b20f258d530981f895","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # mount.sofs must be installed"},{"line_number":96,"context_line":"        if not os.access(\u0027/sbin/mount.sofs\u0027, os.X_OK):"},{"line_number":97,"context_line":"            msg \u003d _(\"Cannot execute /sbin/mount.sofs\")"},{"line_number":98,"context_line":"            LOG.error(msg)"},{"line_number":99,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_7cc82e57","line":97,"updated":"2015-07-30 06:31:06.000000000","message":"Can\u0027t is better","commit_id":"e3dc171fd12c12e9f14a14d1e6f003229ec70c8d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1ae864b9f3e0290c07f39ca8b27947970a302787","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # mount.sofs must be installed"},{"line_number":96,"context_line":"        if not os.access(\u0027/sbin/mount.sofs\u0027, os.X_OK):"},{"line_number":97,"context_line":"            msg \u003d _(\"Cannot execute /sbin/mount.sofs\")"},{"line_number":98,"context_line":"            LOG.error(msg)"},{"line_number":99,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_dd6b601e","line":97,"in_reply_to":"3a50d1a3_28d34061","updated":"2015-07-30 17:01:05.000000000","message":"Jay didn\u0027t say anything about not using cannot. My interpretation of the comment is can the text of the message be better to better convey what the error was or means.","commit_id":"e3dc171fd12c12e9f14a14d1e6f003229ec70c8d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e0da5f00dbde309177b1bd837c38633acb31675a","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # mount.sofs must be installed"},{"line_number":96,"context_line":"        if not os.access(\u0027/sbin/mount.sofs\u0027, os.X_OK):"},{"line_number":97,"context_line":"            msg \u003d _(\"Cannot execute /sbin/mount.sofs\")"},{"line_number":98,"context_line":"            LOG.error(msg)"},{"line_number":99,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_28d34061","line":97,"in_reply_to":"3a50d1a3_7cc82e57","updated":"2015-07-30 08:14:25.000000000","message":"Hi Jay,\nAre you an english teacher ? I can\"t find any reference to support your claim. Do you have a link or a book where it\u0027s written that \"cannot\" is improper english ?  (see http://english.stackexchange.com/questions/78935/when-to-use-cannot-versus-cant)","commit_id":"e3dc171fd12c12e9f14a14d1e6f003229ec70c8d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"53016140a6b9dd4ab85b45dd727214e29233a225","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               help\u003d\u0027Path from Scality SOFS root to volume dir\u0027),"},{"line_number":44,"context_line":"    cfg.BoolOpt(\u0027scality_sofs_sparsed_volumes\u0027,"},{"line_number":45,"context_line":"                default\u003dTrue,"},{"line_number":46,"context_line":"                help\u003d(\u0027Create volumes as sparsed files which take no space.\u0027"},{"line_number":47,"context_line":"                      \u0027If set to False volume is created as regular file.\u0027"},{"line_number":48,"context_line":"                      \u0027In such case volume creation takes a lot of time.\u0027)),"},{"line_number":49,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_aa2cc64a","line":46,"updated":"2015-08-11 08:42:07.000000000","message":"Missing blank space after \"space.\"","commit_id":"ccf5024c92fd43f2849345300ebc578e55d1a79a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"53016140a6b9dd4ab85b45dd727214e29233a225","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.BoolOpt(\u0027scality_sofs_sparsed_volumes\u0027,"},{"line_number":45,"context_line":"                default\u003dTrue,"},{"line_number":46,"context_line":"                help\u003d(\u0027Create volumes as sparsed files which take no space.\u0027"},{"line_number":47,"context_line":"                      \u0027If set to False volume is created as regular file.\u0027"},{"line_number":48,"context_line":"                      \u0027In such case volume creation takes a lot of time.\u0027)),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_4a1c2213","line":47,"updated":"2015-08-11 08:42:07.000000000","message":"Missing blank space after \"file.\"","commit_id":"ccf5024c92fd43f2849345300ebc578e55d1a79a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cbd2e1a1693c93d5863075fa92cb5451b3e75ea9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            urllib.request.urlopen(config, timeout\u003d5).close()"},{"line_number":90,"context_line":"        except (urllib.error.URLError, urllib.error.HTTPError) as e:"},{"line_number":91,"context_line":"            msg \u003d _(\"Can\u0027t access \u0027scality_sofs_config\u0027: %s\") % e"},{"line_number":92,"context_line":"            LOG.error(msg)"},{"line_number":93,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_11562a5c","line":91,"updated":"2015-08-11 19:13:19.000000000","message":"Existing code, but if e contains any unicode characters this could result in an exception on formatting the string. It should have six.text_type() around it to do a safe conversion.","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"518a017623dc7dcc1da28a15001d6a9e4bfbb3ff","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            urllib.request.urlopen(config, timeout\u003d5).close()"},{"line_number":90,"context_line":"        except (urllib.error.URLError, urllib.error.HTTPError) as e:"},{"line_number":91,"context_line":"            msg \u003d _(\"Can\u0027t access \u0027scality_sofs_config\u0027: %s\") % e"},{"line_number":92,"context_line":"            LOG.error(msg)"},{"line_number":93,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_8c3d2a2d","line":91,"in_reply_to":"1a4dcd0f_11562a5c","updated":"2015-08-12 09:09:46.000000000","message":"Will do.","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"6f7d34c9fd1549ac6c841dda7459378691f2c9d4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            urllib.request.urlopen(config, timeout\u003d5).close()"},{"line_number":90,"context_line":"        except (urllib.error.URLError, urllib.error.HTTPError) as e:"},{"line_number":91,"context_line":"            msg \u003d _(\"Can\u0027t access \u0027scality_sofs_config\u0027: %s\") % e"},{"line_number":92,"context_line":"            LOG.error(msg)"},{"line_number":93,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_caf788d1","line":91,"in_reply_to":"1a4dcd0f_8c3d2a2d","updated":"2015-08-12 12:36:35.000000000","message":"I think the usage of six.text_type() is discouraged according to http://docs.openstack.org/developer/oslo.i18n/guidelines.html#avoid-forcing-the-translation-of-translatable-variables\n\nMoreover I\u0027ve added some unicode char in the exception raised in my unit test and the current code seems fine. I may be missing something, I am far from an expert in this matter...","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cbd2e1a1693c93d5863075fa92cb5451b3e75ea9","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self._ensure_share_mounted()"},{"line_number":148,"context_line":"        self._mounted_shares \u003d [self.sofs_rel_volume_dir]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _find_share(self, volume_size_for):"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            return self._mounted_shares[0]"},{"line_number":153,"context_line":"        except IndexError:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d1f9a24f","line":150,"updated":"2015-08-11 19:13:19.000000000","message":"I don\u0027t see _find_share being used anywhere, and it doesn\u0027t seem to do anything with volume_size_for.","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"518a017623dc7dcc1da28a15001d6a9e4bfbb3ff","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self._ensure_share_mounted()"},{"line_number":148,"context_line":"        self._mounted_shares \u003d [self.sofs_rel_volume_dir]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _find_share(self, volume_size_for):"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            return self._mounted_shares[0]"},{"line_number":153,"context_line":"        except IndexError:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_6c553e4e","line":150,"in_reply_to":"1a4dcd0f_d1f9a24f","updated":"2015-08-12 09:09:46.000000000","message":"It\u0027s called by volume/drivers/remotefs.py. But the \"find_share\" method in remotefs.py raise \"NotImplementedError\".\n\nvolume_size_for is indeed not used at all. But this driver has to follow the API so the method needs another argument.","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cbd2e1a1693c93d5863075fa92cb5451b3e75ea9","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"            path_to_snap_img \u003d os.path.join(vol_path, img_info.backing_file)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        LOG.debug(\"will copy from snapshot at %s\" % path_to_snap_img)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        path_to_new_vol \u003d self.local_path(volume)"},{"line_number":248,"context_line":"        out_format \u003d \u0027raw\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_ac059d11","line":245,"updated":"2015-08-11 19:13:19.000000000","message":"Change % to , so the logger can handle the formatting if and when needed.","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"518a017623dc7dcc1da28a15001d6a9e4bfbb3ff","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"            path_to_snap_img \u003d os.path.join(vol_path, img_info.backing_file)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        LOG.debug(\"will copy from snapshot at %s\" % path_to_snap_img)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        path_to_new_vol \u003d self.local_path(volume)"},{"line_number":248,"context_line":"        out_format \u003d \u0027raw\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_ecee2e8a","line":245,"in_reply_to":"1a4dcd0f_ac059d11","updated":"2015-08-12 09:09:46.000000000","message":"Will do.","commit_id":"1ab66b1ce3e9ad962815aa0b8a0d712ec3ea943e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8c888edab5f8f7543ed640e6588188a491bec3f9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.sofs_abs_volume_dir \u003d os.path.join(self.sofs_mount_point,"},{"line_number":70,"context_line":"                                                self.sofs_rel_volume_dir)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.shares \u003d {}  # address : options"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def check_for_setup_error(self):"},{"line_number":75,"context_line":"        \"\"\"Sanity checks before attempting to mount SOFS.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_e74185aa","line":72,"updated":"2015-08-19 17:55:23.000000000","message":"Not sure why this is needed -- it\u0027s in RemoteFSDriver.  Probably more confusing to define it here again.","commit_id":"98b3d26838d54bb97765b0ded406331498d2d5ca"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5f78f73fa41fa361ac47da4f7defa2f67a9fb9c3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.sofs_abs_volume_dir \u003d os.path.join(self.sofs_mount_point,"},{"line_number":70,"context_line":"                                                self.sofs_rel_volume_dir)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.shares \u003d {}  # address : options"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def check_for_setup_error(self):"},{"line_number":75,"context_line":"        \"\"\"Sanity checks before attempting to mount SOFS.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_14011705","line":72,"in_reply_to":"fa1b9901_e74185aa","updated":"2015-08-20 14:32:47.000000000","message":"Yep. Done. Thanks","commit_id":"98b3d26838d54bb97765b0ded406331498d2d5ca"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aaf292e2493dad6b0a0ab31abf03a6a1fbc62c61","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        except (urllib.error.URLError, urllib.error.HTTPError) as e:"},{"line_number":100,"context_line":"            msg \u003d _(\"Can\u0027t access \u0027scality_sofs_config\u0027: %s\")"},{"line_number":101,"context_line":"            LOG.error(msg, e)"},{"line_number":102,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg % e)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # mount.sofs must be installed"},{"line_number":105,"context_line":"        if not os.access(\u0027/sbin/mount.sofs\u0027, os.X_OK):"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_8c32250f","line":102,"updated":"2015-08-25 20:11:22.000000000","message":"Since this is being used for both the logger and the exception it would actually be better to leave it as it was. The string is going to be formatted for sure, so there is no point in delaying string formatting for the logger. With this change the string will end up needing to be formatted both in the logger and for the exception initialization. Might as well just do it once up front.\n\nIt would be safer to use six.text_type() around e to make sure it does a safe string conversion if there is a unicode character in the exception, but I\u0027m not sure if this type of exception could have anything that would cause trouble. So I would be fine if it didn\u0027t, but it would be safer if it did.","commit_id":"6c67625fa0bde7fe820da4345e80af8eb3c31d1e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d5fb9606fc3429dfd8d19ef325d2c4d1c04e5724","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        except (urllib.error.URLError, urllib.error.HTTPError) as e:"},{"line_number":100,"context_line":"            msg \u003d _(\"Can\u0027t access \u0027scality_sofs_config\u0027: %s\")"},{"line_number":101,"context_line":"            LOG.error(msg, e)"},{"line_number":102,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg % e)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # mount.sofs must be installed"},{"line_number":105,"context_line":"        if not os.access(\u0027/sbin/mount.sofs\u0027, os.X_OK):"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa1b9901_17a7e750","line":102,"in_reply_to":"fa1b9901_8c32250f","updated":"2015-08-26 09:15:21.000000000","message":"Done","commit_id":"6c67625fa0bde7fe820da4345e80af8eb3c31d1e"},{"author":{"_account_id":17718,"name":"Lallana","email":"gaozhiqiang2@huawei.com","username":"Lallana"},"change_message_id":"c7145fbbfe61f16acb83af3918872e19a214bed1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Scality SOFS Volume Driver."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import errno"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_54ef9a1d","line":20,"updated":"2015-08-26 09:41:50.000000000","message":"Too many empty lines","commit_id":"36c8137d475c7b870b2375e50882a20319e6981d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a64323d4e24d20c89f873d062adc2f381373dacd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Scality SOFS Volume Driver."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import errno"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"fa1b9901_17592435","line":20,"in_reply_to":"fa1b9901_54ef9a1d","updated":"2015-08-26 09:59:56.000000000","message":"There used to be 2 empty lines here. I am not going to remove an extra empty line, this part of the code is not related to my patch here. We try to avoid cosmetic/empty lines/white spaces changes.\n\nMoreover, the pep8 job doesn\u0027t complain. If you really think that there must be one and only one empty line here, I suggest you to add a check in the \"hacking\" project here: http://docs.openstack.org/developer/hacking/","commit_id":"36c8137d475c7b870b2375e50882a20319e6981d"}]}
