)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"844fbb3abb317ccad444b46392ebfede03d1493d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"over SMB, when using Hyper-V."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The only information that we attempt to retrieve in this case is"},{"line_number":16,"context_line":"the volume format. We can easily avoid this kind of issues by always"},{"line_number":17,"context_line":"using the volume format as an extension for the image files (at"},{"line_number":18,"context_line":"the moment we do this only for vhd/x images)."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5aef4532_21ba0a24","line":16,"range":{"start_line":16,"start_character":39,"end_line":16,"end_character":43},"updated":"2016-03-07 16:56:54.000000000","message":"this -\u003e these","commit_id":"c1d12b6810208bdbfa1edf51102fb59526f88cae"}],"cinder/tests/unit/test_smbfs.py":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2e04a4c066c7aacda302467008a715ce753ed982","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @mock.patch(\u0027os.path.exists\u0027)"},{"line_number":242,"context_line":"    def _test_create_volume(self, mock_exists, volume_exists\u003dFalse,"},{"line_number":243,"context_line":"                            volume_format\u003dNone, use_sparsed_file\u003dFalse):"},{"line_number":244,"context_line":"        mock.patch.multiple(smbfs.SmbfsDriver,"},{"line_number":245,"context_line":"                            _create_windows_image\u003dmock.DEFAULT,"},{"line_number":246,"context_line":"                            _create_regular_file\u003dmock.DEFAULT,"},{"line_number":247,"context_line":"                            _create_qcow2_file\u003dmock.DEFAULT,"},{"line_number":248,"context_line":"                            _create_sparsed_file\u003dmock.DEFAULT,"},{"line_number":249,"context_line":"                            get_volume_format\u003dmock.DEFAULT,"},{"line_number":250,"context_line":"                            local_path\u003dmock.DEFAULT,"},{"line_number":251,"context_line":"                            _set_rw_permissions_for_all\u003dmock.DEFAULT).start()"},{"line_number":252,"context_line":"        self._smbfs_driver.configuration \u003d copy.copy(self._FAKE_SMBFS_CONFIG)"},{"line_number":253,"context_line":"        self._smbfs_driver.configuration.smbfs_sparsed_volumes \u003d ("},{"line_number":254,"context_line":"            use_sparsed_file)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_88dbdc4e","line":251,"range":{"start_line":244,"start_character":8,"end_line":251,"end_character":77},"updated":"2016-03-30 19:17:16.000000000","message":"it might be better to use the \u0027with mock.patch.multiple(...):\u0027 syntax for this since you otherwise would probably want to call stop() somewhere in here","commit_id":"5e1af8932435d5c8a718788f0828a66f412f32e5"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"83476c2d5174e93088d5e892fa2fd88c7526511f","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @mock.patch(\u0027os.path.exists\u0027)"},{"line_number":242,"context_line":"    def _test_create_volume(self, mock_exists, volume_exists\u003dFalse,"},{"line_number":243,"context_line":"                            volume_format\u003dNone, use_sparsed_file\u003dFalse):"},{"line_number":244,"context_line":"        mock.patch.multiple(smbfs.SmbfsDriver,"},{"line_number":245,"context_line":"                            _create_windows_image\u003dmock.DEFAULT,"},{"line_number":246,"context_line":"                            _create_regular_file\u003dmock.DEFAULT,"},{"line_number":247,"context_line":"                            _create_qcow2_file\u003dmock.DEFAULT,"},{"line_number":248,"context_line":"                            _create_sparsed_file\u003dmock.DEFAULT,"},{"line_number":249,"context_line":"                            get_volume_format\u003dmock.DEFAULT,"},{"line_number":250,"context_line":"                            local_path\u003dmock.DEFAULT,"},{"line_number":251,"context_line":"                            _set_rw_permissions_for_all\u003dmock.DEFAULT).start()"},{"line_number":252,"context_line":"        self._smbfs_driver.configuration \u003d copy.copy(self._FAKE_SMBFS_CONFIG)"},{"line_number":253,"context_line":"        self._smbfs_driver.configuration.smbfs_sparsed_volumes \u003d ("},{"line_number":254,"context_line":"            use_sparsed_file)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_a37fcb64","line":251,"range":{"start_line":244,"start_character":8,"end_line":251,"end_character":77},"in_reply_to":"5a18252c_ada97f92","updated":"2016-04-19 21:11:23.000000000","message":"Ohh, ok cool. nvm then :)","commit_id":"5e1af8932435d5c8a718788f0828a66f412f32e5"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"fe8932ea2401702e4fff18c168dfd4e2fb0d2200","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @mock.patch(\u0027os.path.exists\u0027)"},{"line_number":242,"context_line":"    def _test_create_volume(self, mock_exists, volume_exists\u003dFalse,"},{"line_number":243,"context_line":"                            volume_format\u003dNone, use_sparsed_file\u003dFalse):"},{"line_number":244,"context_line":"        mock.patch.multiple(smbfs.SmbfsDriver,"},{"line_number":245,"context_line":"                            _create_windows_image\u003dmock.DEFAULT,"},{"line_number":246,"context_line":"                            _create_regular_file\u003dmock.DEFAULT,"},{"line_number":247,"context_line":"                            _create_qcow2_file\u003dmock.DEFAULT,"},{"line_number":248,"context_line":"                            _create_sparsed_file\u003dmock.DEFAULT,"},{"line_number":249,"context_line":"                            get_volume_format\u003dmock.DEFAULT,"},{"line_number":250,"context_line":"                            local_path\u003dmock.DEFAULT,"},{"line_number":251,"context_line":"                            _set_rw_permissions_for_all\u003dmock.DEFAULT).start()"},{"line_number":252,"context_line":"        self._smbfs_driver.configuration \u003d copy.copy(self._FAKE_SMBFS_CONFIG)"},{"line_number":253,"context_line":"        self._smbfs_driver.configuration.smbfs_sparsed_volumes \u003d ("},{"line_number":254,"context_line":"            use_sparsed_file)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a18252c_ada97f92","line":251,"range":{"start_line":244,"start_character":8,"end_line":251,"end_character":77},"in_reply_to":"ba0121b8_88dbdc4e","updated":"2016-04-14 10:52:39.000000000","message":"In the setUp method, we have self.addCleanup(mock.patch.stopall). This way, we don\u0027t need to use a context manager, having to add an extra tab, making the code a bit more readable. Also, we don\u0027t have to remember to \u0027stop\u0027 the mock.","commit_id":"5e1af8932435d5c8a718788f0828a66f412f32e5"}],"cinder/volume/drivers/remotefs.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"605c1f4954096cc7fc25a7431d9614e52b79cb9f","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        if info.backing_file:"},{"line_number":692,"context_line":"            backing_file_template \u003d \\"},{"line_number":693,"context_line":"                r\"(%(basedir)s/[0-9a-f]+/)?%\" \\"},{"line_number":694,"context_line":"                r\"(volname)s(.(tmp-snap-)?[0-9a-f-]+)?(\\.\\w+)?$\" % {"},{"line_number":695,"context_line":"                    \u0027basedir\u0027: basedir,"},{"line_number":696,"context_line":"                    \u0027volname\u0027: volume_name"},{"line_number":697,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_e5f2f86e","line":694,"updated":"2016-03-07 14:31:42.000000000","message":"IMO we need a unit test exercising some good and bad cases for this before making it more complex, since this is code implementing a security check.","commit_id":"c1d12b6810208bdbfa1edf51102fb59526f88cae"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"ec179a0a620083361fcb4b3043f09be02dad7d99","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        if info.backing_file:"},{"line_number":692,"context_line":"            backing_file_template \u003d \\"},{"line_number":693,"context_line":"                r\"(%(basedir)s/[0-9a-f]+/)?%\" \\"},{"line_number":694,"context_line":"                r\"(volname)s(.(tmp-snap-)?[0-9a-f-]+)?(\\.\\w+)?$\" % {"},{"line_number":695,"context_line":"                    \u0027basedir\u0027: basedir,"},{"line_number":696,"context_line":"                    \u0027volname\u0027: volume_name"},{"line_number":697,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_803a02cc","line":694,"in_reply_to":"5aef4532_e5f2f86e","updated":"2016-03-07 14:36:37.000000000","message":"Good point. I\u0027ll add some unit tests for this in the following patch set.","commit_id":"c1d12b6810208bdbfa1edf51102fb59526f88cae"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"f0019962b63d449dec27598a3f664b88c2d94527","unresolved":false,"context_lines":[{"line_number":702,"context_line":"                \"(volname)s(.(tmp-snap-)?[0-9a-f-]+)?%(valid_ext)s$\" % {"},{"line_number":703,"context_line":"                    \u0027basedir\u0027: basedir,"},{"line_number":704,"context_line":"                    \u0027volname\u0027: volume_name,"},{"line_number":705,"context_line":"                    \u0027valid_ext\u0027: valid_ext,"},{"line_number":706,"context_line":"                }"},{"line_number":707,"context_line":"            if not re.match(backing_file_template, info.backing_file):"},{"line_number":708,"context_line":"                msg \u003d _(\"File %(path)s has invalid backing file \""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_30dde40e","line":705,"range":{"start_line":705,"start_character":0,"end_line":705,"end_character":20},"updated":"2016-03-09 02:44:17.000000000","message":"Seems this check is spefific for SMB driver, could we move this check into SMB driver?","commit_id":"5e1af8932435d5c8a718788f0828a66f412f32e5"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2e04a4c066c7aacda302467008a715ce753ed982","unresolved":false,"context_lines":[{"line_number":702,"context_line":"                \"(volname)s(.(tmp-snap-)?[0-9a-f-]+)?%(valid_ext)s$\" % {"},{"line_number":703,"context_line":"                    \u0027basedir\u0027: basedir,"},{"line_number":704,"context_line":"                    \u0027volname\u0027: volume_name,"},{"line_number":705,"context_line":"                    \u0027valid_ext\u0027: valid_ext,"},{"line_number":706,"context_line":"                }"},{"line_number":707,"context_line":"            if not re.match(backing_file_template, info.backing_file):"},{"line_number":708,"context_line":"                msg \u003d _(\"File %(path)s has invalid backing file \""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_68b3e8e9","line":705,"range":{"start_line":705,"start_character":0,"end_line":705,"end_character":20},"in_reply_to":"5aef4532_30dde40e","updated":"2016-03-30 19:17:16.000000000","message":"Seems ok to have this here since it defaults to an empty string for other remotefs drivers that may or may not ever use this feature.","commit_id":"5e1af8932435d5c8a718788f0828a66f412f32e5"},{"author":{"_account_id":8543,"name":"Lucian Petrut","email":"lpetrut@cloudbasesolutions.com","username":"plucian"},"change_message_id":"1cd9d3fe5e154c19d9786bcc4192d5f587760436","unresolved":false,"context_lines":[{"line_number":702,"context_line":"                \"(volname)s(.(tmp-snap-)?[0-9a-f-]+)?%(valid_ext)s$\" % {"},{"line_number":703,"context_line":"                    \u0027basedir\u0027: basedir,"},{"line_number":704,"context_line":"                    \u0027volname\u0027: volume_name,"},{"line_number":705,"context_line":"                    \u0027valid_ext\u0027: valid_ext,"},{"line_number":706,"context_line":"                }"},{"line_number":707,"context_line":"            if not re.match(backing_file_template, info.backing_file):"},{"line_number":708,"context_line":"                msg \u003d _(\"File %(path)s has invalid backing file \""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_89d2cad0","line":705,"range":{"start_line":705,"start_character":0,"end_line":705,"end_character":20},"in_reply_to":"5aef4532_30dde40e","updated":"2016-03-09 08:02:52.000000000","message":"Well, other remotefs based drivers may use extensions in the future for similar reasons.\n\nBesides, I wanted the remotefs base class to serve as much as possible the drivers in a generic way so that we avoid duplicating code.","commit_id":"5e1af8932435d5c8a718788f0828a66f412f32e5"}]}
