)]}'
{"manila/tests/api/fakes.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2123cb5f19385f7b0b09a9356049a06efa14ef9f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_utils import uuidutils"},{"line_number":19,"context_line":"import routes"},{"line_number":20,"context_line":"import webob"},{"line_number":21,"context_line":"import webob.dec"},{"line_number":22,"context_line":"import webob.request"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from manila.api import common as api_common"},{"line_number":25,"context_line":"from manila.api.openstack import api_version_request as api_version"},{"line_number":26,"context_line":"from manila.api.openstack import wsgi as os_wsgi"},{"line_number":27,"context_line":"from manila.api import urlmap"},{"line_number":28,"context_line":"from manila.api.v1 import router as router_v1"},{"line_number":29,"context_line":"from manila.api.v2 import router as router_v2"},{"line_number":30,"context_line":"from manila.common import constants"},{"line_number":31,"context_line":"from manila import context"},{"line_number":32,"context_line":"from manila import exception"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"FAKE_UUID \u003d \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027"},{"line_number":36,"context_line":"FAKE_UUIDS \u003d {}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class Context(object):"},{"line_number":40,"context_line":"    pass"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FakeRouter(wsgi.Router):"},{"line_number":44,"context_line":"    def __init__(self, ext_mgr\u003dNone):"},{"line_number":45,"context_line":"        pass"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @webob.dec.wsgify"},{"line_number":48,"context_line":"    def __call__(self, req):"},{"line_number":49,"context_line":"        res \u003d webob.Response()"},{"line_number":50,"context_line":"        res.status \u003d \u0027200\u0027"},{"line_number":51,"context_line":"        res.headers[\u0027X-Test-Success\u0027] \u003d \u0027True\u0027"},{"line_number":52,"context_line":"        return res"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"@webob.dec.wsgify"},{"line_number":56,"context_line":"def fake_wsgi(self, req):"},{"line_number":57,"context_line":"    return self.application"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class FakeToken(object):"},{"line_number":61,"context_line":"    id_count \u003d 0"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __getitem__(self, key):"},{"line_number":64,"context_line":"        return getattr(self, key)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2688bd20","line":61,"range":{"start_line":21,"start_character":0,"end_line":61,"end_character":16},"updated":"2019-02-20 18:36:16.000000000","message":"nice cleanup!","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"}],"manila/tests/api/v1/test_limits.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2123cb5f19385f7b0b09a9356049a06efa14ef9f","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                                            \u0027(POST, /bar*, /bar.*, 5, second);\u0027"},{"line_number":370,"context_line":"                                            \u0027(Say, /derp*, /derp.*, 1, day)\u0027)"},{"line_number":371,"context_line":"        except ValueError as e:"},{"line_number":372,"context_line":"            assert False, six.text_type(e)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        # Make sure the number of returned limits are correct"},{"line_number":375,"context_line":"        self.assertEqual(4, len(l))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_8699697a","line":372,"range":{"start_line":372,"start_character":30,"end_line":372,"end_character":39},"updated":"2019-02-20 18:36:16.000000000","message":"heh","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                                            \u0027(PUT, /foo*, /foo.*, 10, hour);\u0027"},{"line_number":369,"context_line":"                                            \u0027(POST, /bar*, /bar.*, 5, second);\u0027"},{"line_number":370,"context_line":"                                            \u0027(Say, /derp*, /derp.*, 1, day)\u0027)"},{"line_number":371,"context_line":"        except ValueError as e:"},{"line_number":372,"context_line":"            assert False, six.text_type(e)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        # Make sure the number of returned limits are correct"},{"line_number":375,"context_line":"        self.assertEqual(4, len(l))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_33135010","line":372,"range":{"start_line":371,"start_character":31,"end_line":372,"end_character":42},"updated":"2019-03-05 18:45:32.000000000","message":"this just doesn\u0027t stop","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}],"manila/tests/network/linux/test_interface.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2123cb5f19385f7b0b09a9356049a06efa14ef9f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from manila import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class BaseChild(interface.LinuxInterfaceDriver):"},{"line_number":27,"context_line":"    def plug(self, *args):"},{"line_number":28,"context_line":"        pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def unplug(self, *args):"},{"line_number":31,"context_line":"        pass"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_0687b911","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":28},"updated":"2019-02-20 18:36:16.000000000","message":"!!","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"}],"manila/tests/scheduler/test_manager.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2123cb5f19385f7b0b09a9356049a06efa14ef9f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.topic \u003d \u0027fake_topic\u0027"},{"line_number":73,"context_line":"        self.fake_args \u003d (1, 2, 3)"},{"line_number":74,"context_line":"        self.fake_kwargs \u003d {\u0027cat\u0027: \u0027meow\u0027, \u0027dog\u0027: \u0027woof\u0027}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def raise_no_valid_host(self, *args, **kwargs):"},{"line_number":77,"context_line":"            raise exception.NoValidHost(reason\u003d\"\")"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_1_correct_init(self):"},{"line_number":80,"context_line":"        # Correct scheduler driver"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_66756532","line":77,"range":{"start_line":75,"start_character":0,"end_line":77,"end_character":50},"updated":"2019-02-20 18:36:16.000000000","message":"Thanks for fixing these signature errors!","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.fake_args \u003d (1, 2, 3)"},{"line_number":74,"context_line":"        self.fake_kwargs \u003d {\u0027cat\u0027: \u0027meow\u0027, \u0027dog\u0027: \u0027woof\u0027}"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def raise_no_valid_host(self, *args, **kwargs):"},{"line_number":77,"context_line":"            raise exception.NoValidHost(reason\u003d\"\")"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_1_correct_init(self):"},{"line_number":80,"context_line":"        # Correct scheduler driver"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_936c849d","line":77,"range":{"start_line":76,"start_character":26,"end_line":77,"end_character":50},"updated":"2019-03-05 18:45:32.000000000","message":"heh","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}],"manila/tests/share/drivers/dell_emc/plugins/unity/test_utils.py":[{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"80e7c24c03e0454d29af3b3da6f0be584ab6a50c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from manila import test"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class MockPort(object):"},{"line_number":24,"context_line":"    def __init__(self, sp_id):"},{"line_number":25,"context_line":"        self.sp_id \u003d sp_id"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2a578a03","line":23,"updated":"2019-02-28 02:29:45.000000000","message":"Rename to MockSP","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ec055acb6fa593637407005b53e3cd9916fbba2e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from manila import test"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class MockPort(object):"},{"line_number":24,"context_line":"    def __init__(self, sp_id):"},{"line_number":25,"context_line":"        self.sp_id \u003d sp_id"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b331a40d","line":23,"in_reply_to":"9fdfeff1_2a578a03","updated":"2019-02-28 17:12:14.000000000","message":"Done","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"80e7c24c03e0454d29af3b3da6f0be584ab6a50c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        return self.sp_id"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SPA \u003d MockPort(\u0027spa\u0027)"},{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_ca411e3b","line":31,"updated":"2019-02-28 02:29:45.000000000","message":"Rename to MockSP","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ec055acb6fa593637407005b53e3cd9916fbba2e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        return self.sp_id"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SPA \u003d MockPort(\u0027spa\u0027)"},{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_d33468fd","line":31,"in_reply_to":"9fdfeff1_ca411e3b","updated":"2019-02-28 17:12:14.000000000","message":"Done","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"80e7c24c03e0454d29af3b3da6f0be584ab6a50c","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SPA \u003d MockPort(\u0027spa\u0027)"},{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MockPort(object):  # pylint: disable\u003dfunction-redefined"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_aa429a39","line":32,"updated":"2019-02-28 02:29:45.000000000","message":"Rename to MockSP","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ec055acb6fa593637407005b53e3cd9916fbba2e","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SPA \u003d MockPort(\u0027spa\u0027)"},{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MockPort(object):  # pylint: disable\u003dfunction-redefined"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_7337bcff","line":32,"in_reply_to":"9fdfeff1_aa429a39","updated":"2019-02-28 17:12:14.000000000","message":"Done","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"b0020dbd5867d1dd65f4674de4113e410efd7137","unresolved":false,"context_lines":[{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MockPort(object):  # pylint: disable\u003dfunction-redefined"},{"line_number":36,"context_line":"    def __init__(self, sp, port_id, mtu):"},{"line_number":37,"context_line":"        self._sp \u003d sp"},{"line_number":38,"context_line":"        self.port_id \u003d port_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_b35a32ef","line":35,"range":{"start_line":35,"start_character":27,"end_line":35,"end_character":61},"updated":"2019-02-27 06:49:54.000000000","message":"Why is it, though? Both are basically the same object only this one has mtu and a property... I believe we can unite them into one.","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"80e7c24c03e0454d29af3b3da6f0be584ab6a50c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MockPort(object):  # pylint: disable\u003dfunction-redefined"},{"line_number":36,"context_line":"    def __init__(self, sp, port_id, mtu):"},{"line_number":37,"context_line":"        self._sp \u003d sp"},{"line_number":38,"context_line":"        self.port_id \u003d port_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_ca3cbec9","line":35,"range":{"start_line":35,"start_character":27,"end_line":35,"end_character":61},"in_reply_to":"9fdfeff1_2c77afa2","updated":"2019-02-28 02:29:45.000000000","message":"This is Ryan, one of the Unity manila driver maintainer. You could rename the first `MockPort` to `MockSP`. I tested in my workspace that it doesn\u0027t break the test.","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"12dfdc5d62d1207571496e2bdac5b5e2bd0b4135","unresolved":false,"context_lines":[{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MockPort(object):  # pylint: disable\u003dfunction-redefined"},{"line_number":36,"context_line":"    def __init__(self, sp, port_id, mtu):"},{"line_number":37,"context_line":"        self._sp \u003d sp"},{"line_number":38,"context_line":"        self.port_id \u003d port_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2c77afa2","line":35,"range":{"start_line":35,"start_character":27,"end_line":35,"end_character":61},"in_reply_to":"9fdfeff1_b35a32ef","updated":"2019-02-27 20:29:29.000000000","message":"probably not, I looked at the test that\u0027s using this, and felt like they are mocking the separately because they\u0027re actually results of two separate APIs. Personally, I would have just used different names for these two mocks, but, this is really the driver maintainer\u0027s discretion.","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"85eabf17ab3269423528651ed10d1cb3537234e3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"SPB \u003d MockPort(\u0027spb\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class MockPort(object):  # pylint: disable\u003dfunction-redefined"},{"line_number":36,"context_line":"    def __init__(self, sp, port_id, mtu):"},{"line_number":37,"context_line":"        self._sp \u003d sp"},{"line_number":38,"context_line":"        self.port_id \u003d port_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f37c0cb7","line":35,"range":{"start_line":35,"start_character":27,"end_line":35,"end_character":61},"in_reply_to":"9fdfeff1_ca3cbec9","updated":"2019-02-28 16:33:33.000000000","message":"Oh, nice. Thanks for looking and verifying, Ryan. I\u0027ll update this patch.","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"}],"manila/tests/share/drivers/netapp/test_utils.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                          na_utils.setup_tracing, \u0027method,api\u0027,"},{"line_number":90,"context_line":"                          api_trace_pattern\u003dregex)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @na_utils.trace"},{"line_number":93,"context_line":"    def _trace_test_method(self, *args, **kwargs):"},{"line_number":94,"context_line":"        return \u0027OK\u0027"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_trace_no_tracing(self):"},{"line_number":97,"context_line":"        result \u003d self._trace_test_method()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_935324e3","line":94,"range":{"start_line":92,"start_character":19,"end_line":94,"end_character":19},"updated":"2019-03-05 18:45:32.000000000","message":"yup","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}],"manila/tests/share/drivers/test_generic.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":492,"context_line":"    def test_add_mount_permanently(self):"},{"line_number":493,"context_line":"        self.mock_object(self._driver, \u0027_ssh_exec\u0027)"},{"line_number":494,"context_line":"        self._driver._add_mount_permanently(self.share.id, self.server)"},{"line_number":495,"context_line":"        self._driver._ssh_exec.assert_has_calls(["},{"line_number":496,"context_line":"            mock.call("},{"line_number":497,"context_line":"                self.server,"},{"line_number":498,"context_line":"                [\u0027grep\u0027, self.share.id, const.MOUNT_FILE_TEMP,"},{"line_number":499,"context_line":"                 \u0027|\u0027, \u0027sudo\u0027, \u0027tee\u0027, \u0027-a\u0027, const.MOUNT_FILE]),"},{"line_number":500,"context_line":"            mock.call(self.server, [\u0027sudo\u0027, \u0027mount\u0027, \u0027-a\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_f3462822","line":497,"range":{"start_line":495,"start_character":31,"end_line":497,"end_character":28},"updated":"2019-03-05 18:45:32.000000000","message":"+1","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}],"manila/tests/share/drivers/zfsonlinux/test_driver.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def __enter__(self, *args, **kwargs):"},{"line_number":96,"context_line":"        return \u0027/foo/path\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def __exit__(self, *args, **kwargs):"},{"line_number":99,"context_line":"        pass"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_33459018","line":98,"range":{"start_line":98,"start_character":16,"end_line":98,"end_character":40},"updated":"2019-03-05 18:45:32.000000000","message":"wow","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}],"manila/tests/share/drivers/zfsonlinux/test_utils.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2123cb5f19385f7b0b09a9356049a06efa14ef9f","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.driver.zfs(\u0027foo\u0027, \u0027bar\u0027)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        self.assertEqual(0, self.driver.execute_with_retry.call_count)"},{"line_number":223,"context_line":"        self.driver.execute.assert_called_once_with("},{"line_number":224,"context_line":"            \u0027sudo\u0027, \u0027zfs\u0027, \u0027foo\u0027, \u0027bar\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_zfs_with_retry(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_a6ceed58","line":223,"range":{"start_line":223,"start_character":28,"end_line":223,"end_character":35},"updated":"2019-02-20 18:36:16.000000000","message":"nice","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.driver.zfs(\u0027foo\u0027, \u0027bar\u0027)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        self.assertEqual(0, self.driver.execute_with_retry.call_count)"},{"line_number":223,"context_line":"        self.driver.execute.assert_called_once_with("},{"line_number":224,"context_line":"            \u0027sudo\u0027, \u0027zfs\u0027, \u0027foo\u0027, \u0027bar\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_zfs_with_retry(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_13409407","line":223,"range":{"start_line":223,"start_character":6,"end_line":223,"end_character":52},"updated":"2019-03-05 18:45:32.000000000","message":"ditto","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}],"manila/tests/share/test_driver.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2123cb5f19385f7b0b09a9356049a06efa14ef9f","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        conf \u003d configuration.Configuration(None)"},{"line_number":168,"context_line":"        self.mock_object(conf, \u0027safe_get\u0027, mock.Mock(return_value\u003dopt))"},{"line_number":169,"context_line":"        share_driver \u003d driver.ShareDriver(allowed, configuration\u003dconf)"},{"line_number":170,"context_line":"        self.assertTrue(conf.safe_get.called)"},{"line_number":171,"context_line":"        self.assertEqual(opt, share_driver.driver_handles_share_servers)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    @ddt.data("}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_06033975","line":170,"range":{"start_line":170,"start_character":39,"end_line":170,"end_character":45},"updated":"2019-02-20 18:36:16.000000000","message":"Nice!","commit_id":"2de0d44ad87f3c360198d376d3b740f610f3e81a"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"410a0a133a9edbaf24cda3618fb2c30b40c617b7","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        conf \u003d configuration.Configuration(None)"},{"line_number":168,"context_line":"        self.mock_object(conf, \u0027safe_get\u0027, mock.Mock(return_value\u003dopt))"},{"line_number":169,"context_line":"        share_driver \u003d driver.ShareDriver(allowed, configuration\u003dconf)"},{"line_number":170,"context_line":"        self.assertTrue(conf.safe_get.called)"},{"line_number":171,"context_line":"        self.assertEqual(opt, share_driver.driver_handles_share_servers)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    @ddt.data("}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_93bec4fd","line":170,"range":{"start_line":170,"start_character":37,"end_line":170,"end_character":45},"updated":"2019-03-05 18:45:32.000000000","message":"Who says lint doesn\u0027t catch anything?","commit_id":"3bd1e5054ae25443d11c3f5e04c9a48f54ede843"}]}
