)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1ebbff6b749f53ff29fbd85cbeaf09c0f0f8a1a1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To support Cephfs Native driver a new method was created for"},{"line_number":10,"context_line":"configuring Ceph clients to access the shares."},{"line_number":11,"context_line":"For Ceph native backend \"ceph-fuse\" package must be installed"},{"line_number":12,"context_line":"within the instance for mount operation."},{"line_number":13,"context_line":"Another package called \"crudini\" is required within the instance"},{"line_number":14,"context_line":"for handling ini files."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f493fa4_cbf753d4","line":12,"range":{"start_line":11,"start_character":24,"end_line":12,"end_character":40},"updated":"2020-05-06 22:57:21.000000000","message":"Can imagine someone wanting to test with the kernel client instead... wonder if we should make a tempest conf option to select which one to test with...","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"}],"manila_tempest_tests/tests/scenario/manager_share.py":[{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"748f79f1e9fda8dd233c26bf921916eca6dfdc48","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                share[\u0027id\u0027], instance\u003dinstance, cleanup\u003dFalse,"},{"line_number":351,"context_line":"                snapshot\u003dsnapshot, access_level\u003daccess_level, client\u003dclient)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def provide_access_to_client_identified_by_cephx(self, share\u003dNone,"},{"line_number":354,"context_line":"                                                     access_level\u003d\u0027rw\u0027,"},{"line_number":355,"context_line":"                                                     access_to\u003d\u0027alice\u0027,"},{"line_number":356,"context_line":"                                                     remote_client\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_e226a916","line":353,"updated":"2020-05-07 12:29:38.000000000","message":"This function changes the behavior of ceph for all tests, not just manila ones.\n\nSo:\n- is this change safe for everyone? Then the deployer should do it (devstack-plugin-ceph here on the openstack gates, whatever is used internally otherwise);\n- should this change be limited to manila tests? Then it may be a problem. It should be set just for the manila tests that needs it and reset afterwards, and those tests should not be run together with other tests.","commit_id":"ee8a6970689c6b7bd664daf99a9149cf35cde1bb"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"30f4e0825144cf453915d394ee52c296aeccc053","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                share[\u0027id\u0027], instance\u003dinstance, cleanup\u003dFalse,"},{"line_number":351,"context_line":"                snapshot\u003dsnapshot, access_level\u003daccess_level, client\u003dclient)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def provide_access_to_client_identified_by_cephx(self, share\u003dNone,"},{"line_number":354,"context_line":"                                                     access_level\u003d\u0027rw\u0027,"},{"line_number":355,"context_line":"                                                     access_to\u003d\u0027alice\u0027,"},{"line_number":356,"context_line":"                                                     remote_client\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_5df3f70a","line":353,"in_reply_to":"1f493fa4_7a08792c","updated":"2020-05-07 15:54:03.000000000","message":"So it\u0027s a different ceph configuration that be applied globally? Then it should be changed by the deployer (devstack-plugin-ceph).","commit_id":"ee8a6970689c6b7bd664daf99a9149cf35cde1bb"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"1f008b4580def026d012ef6657402e4a86ebb5dd","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                share[\u0027id\u0027], instance\u003dinstance, cleanup\u003dFalse,"},{"line_number":351,"context_line":"                snapshot\u003dsnapshot, access_level\u003daccess_level, client\u003dclient)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def provide_access_to_client_identified_by_cephx(self, share\u003dNone,"},{"line_number":354,"context_line":"                                                     access_level\u003d\u0027rw\u0027,"},{"line_number":355,"context_line":"                                                     access_to\u003d\u0027alice\u0027,"},{"line_number":356,"context_line":"                                                     remote_client\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_7a08792c","line":353,"in_reply_to":"1f493fa4_e226a916","updated":"2020-05-07 15:47:28.000000000","message":"I don\u0027t understand what do you mean, it changes the behavior of ceph for all tests.\nThis is the way we gathering an access to a share.\nThis method is used for manila scenario tests to providing an access to share on CephFS Native backend.\nThe method is under \"ShareScenarioTest\" class, so I don\u0027t see any problem with that.","commit_id":"ee8a6970689c6b7bd664daf99a9149cf35cde1bb"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e653095b90689d87b907304e6056de00c94b6a93","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            f\"sudo crudini --set {access_to}.keyring client.{access_to} \""},{"line_number":380,"context_line":"            f\"key {get_access[\u0027access_key\u0027]}\")"},{"line_number":381,"context_line":"        remote_client.exec_command("},{"line_number":382,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client quota\\\" true\")"},{"line_number":383,"context_line":"        if not isinstance(locations, list):"},{"line_number":384,"context_line":"            locations \u003d [locations]"},{"line_number":385,"context_line":"        for location in locations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_3ccc7d88","line":382,"updated":"2020-05-11 21:47:29.000000000","message":"NIT missing f for the formatted string","commit_id":"ee8a6970689c6b7bd664daf99a9149cf35cde1bb"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"099c313aa89fb907fdc02a994cf239bb3a7cb530","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            f\"sudo crudini --set {access_to}.keyring client.{access_to} \""},{"line_number":380,"context_line":"            f\"key {get_access[\u0027access_key\u0027]}\")"},{"line_number":381,"context_line":"        remote_client.exec_command("},{"line_number":382,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client quota\\\" true\")"},{"line_number":383,"context_line":"        if not isinstance(locations, list):"},{"line_number":384,"context_line":"            locations \u003d [locations]"},{"line_number":385,"context_line":"        for location in locations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_203d67bb","line":382,"in_reply_to":"ff570b3c_3ccc7d88","updated":"2020-05-12 05:03:40.000000000","message":"No parameter is passed so no format is needed","commit_id":"ee8a6970689c6b7bd664daf99a9149cf35cde1bb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"abfd2ddb6d5a989cef8e526d0213529c550b5bcd","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def provide_access_to_client_identified_by_cephx(self, share\u003dNone,"},{"line_number":354,"context_line":"                                                     access_level\u003d\u0027rw\u0027,"},{"line_number":355,"context_line":"                                                     access_to\u003d\u0027alice\u0027,"},{"line_number":356,"context_line":"                                                     remote_client\u003dNone,"},{"line_number":357,"context_line":"                                                     locations\u003dNone,"},{"line_number":358,"context_line":"                                                     client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_413bf2c6","line":355,"range":{"start_line":355,"start_character":52,"end_line":355,"end_character":71},"updated":"2020-05-29 06:04:47.000000000","message":"This will fail with CephFS.... \n\nTests in a given test class will be run serially using a single OpenStack Tenant/Project credentials, provisioned by tempest. \n\nTests in separate classes can run in parallel, using different OpenStack Tenant/Project credentials... \n\nYou\u0027ve added support for CephFS in three classes:\n\n- manila_tempest_tests.tests.scenario.test_share_basic_ops.ShareBasicOpsBase\n- manila_tempest_tests.tests.scenario.test_share_extend.ShareExtendBase\n- manila_tempest_tests.tests.scenario.test_share_shrink.ShareShrinkBase\n\nThe CephFS driver prevents using the same Ceph user across OpenStack tenants; so when these three test classes are being processed simultaneously, they\u0027ll all fail after the first access rule for \"alice\" goes through.. \n\nI\u0027ve a suggestion, you can create a random ceph user here or in the allow_access method using tempest.lib.common.utils.data_utils.rand_name and use that. WDYT?","commit_id":"7f5df8ef100450fc36808007977304dd00297a28"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"b0aae4cb1c3af885aed01cbf13cef811a7da3457","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def provide_access_to_client_identified_by_cephx(self, share\u003dNone,"},{"line_number":354,"context_line":"                                                     access_level\u003d\u0027rw\u0027,"},{"line_number":355,"context_line":"                                                     access_to\u003d\u0027alice\u0027,"},{"line_number":356,"context_line":"                                                     remote_client\u003dNone,"},{"line_number":357,"context_line":"                                                     locations\u003dNone,"},{"line_number":358,"context_line":"                                                     client\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff570b3c_c706e186","line":355,"range":{"start_line":355,"start_character":52,"end_line":355,"end_character":71},"in_reply_to":"ff570b3c_413bf2c6","updated":"2020-05-31 08:02:05.000000000","message":"Right I forgot about it, I have uploaded a negative test [1] for this situation.\nThanks\n\n[1] https://review.opendev.org/#/c/727072/","commit_id":"7f5df8ef100450fc36808007977304dd00297a28"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ea47b103594761b3301627889c211fe352b5367","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client quota\\\" true\")"},{"line_number":391,"context_line":"        if mount_client \u003d\u003d \u0027fuse\u0027:"},{"line_number":392,"context_line":"            remote_client.exec_command("},{"line_number":393,"context_line":"                \"sudo crudini --set ceph.conf client \\\"client oc size\\\" \""},{"line_number":394,"context_line":"                \"1048576\")"},{"line_number":395,"context_line":"        if not isinstance(locations, list):"},{"line_number":396,"context_line":"            locations \u003d [locations]"},{"line_number":397,"context_line":"        for location in locations:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_05ad719a","line":394,"range":{"start_line":393,"start_character":55,"end_line":394,"end_character":24},"updated":"2020-05-31 19:34:15.000000000","message":"Why is this required?","commit_id":"716a0ef00fe126aef0e5034577e3d21d1fa45383"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"1bff991edfa14f37e3ef2dbbff78161266e256ab","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client quota\\\" true\")"},{"line_number":391,"context_line":"        if mount_client \u003d\u003d \u0027fuse\u0027:"},{"line_number":392,"context_line":"            remote_client.exec_command("},{"line_number":393,"context_line":"                \"sudo crudini --set ceph.conf client \\\"client oc size\\\" \""},{"line_number":394,"context_line":"                \"1048576\")"},{"line_number":395,"context_line":"        if not isinstance(locations, list):"},{"line_number":396,"context_line":"            locations \u003d [locations]"},{"line_number":397,"context_line":"        for location in locations:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_984e0736","line":394,"range":{"start_line":393,"start_character":55,"end_line":394,"end_character":24},"in_reply_to":"ff570b3c_05ad719a","updated":"2020-06-01 08:54:25.000000000","message":"For reducing the bytes of data will the client cache.\nWe can prevent the caching by setting client oc to false but for \nproduction it\u0027s better to reduce the caching.","commit_id":"716a0ef00fe126aef0e5034577e3d21d1fa45383"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"525203181ebff70c7c47d3c19c54287089a9b02a","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        remote_client.exec_command("},{"line_number":389,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client quota\\\" true\")"},{"line_number":390,"context_line":"        remote_client.exec_command("},{"line_number":391,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client oc size\\\" 20971520\")"},{"line_number":392,"context_line":"        if not isinstance(locations, list):"},{"line_number":393,"context_line":"            locations \u003d [locations]"},{"line_number":394,"context_line":"        for location in locations:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_9ed42feb","line":391,"range":{"start_line":391,"start_character":68,"end_line":391,"end_character":76},"updated":"2020-06-01 12:10:41.000000000","message":"Perhaps make this configurable..","commit_id":"5fe2104f4c01926418111d1551f11d4374b29bc9"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"58740bda14f64971f4d30635cfb0b408ef025180","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        remote_client.exec_command("},{"line_number":389,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client quota\\\" true\")"},{"line_number":390,"context_line":"        remote_client.exec_command("},{"line_number":391,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client oc size\\\" 20971520\")"},{"line_number":392,"context_line":"        if not isinstance(locations, list):"},{"line_number":393,"context_line":"            locations \u003d [locations]"},{"line_number":394,"context_line":"        for location in locations:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_21a18247","line":391,"range":{"start_line":391,"start_character":68,"end_line":391,"end_character":76},"in_reply_to":"ff570b3c_9ed42feb","updated":"2020-06-01 13:15:02.000000000","message":"Done","commit_id":"5fe2104f4c01926418111d1551f11d4374b29bc9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"525203181ebff70c7c47d3c19c54287089a9b02a","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client oc size\\\" 20971520\")"},{"line_number":392,"context_line":"        if not isinstance(locations, list):"},{"line_number":393,"context_line":"            locations \u003d [locations]"},{"line_number":394,"context_line":"        for location in locations:"},{"line_number":395,"context_line":"            remote_client.exec_command("},{"line_number":396,"context_line":"                \"sudo crudini --set ceph.conf client \\\"mon host\\\" {}\""},{"line_number":397,"context_line":"                .format(location.split(\u0027:/\u0027)[0]))"},{"line_number":398,"context_line":"        return access"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def wait_for_active_instance(self, instance_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_bed773ee","line":397,"range":{"start_line":394,"start_character":8,"end_line":397,"end_character":49},"updated":"2020-06-01 12:10:41.000000000","message":"Won\u0027t this just rewrite the mon hosts, if the backend provides more than one share location.. sorta confusing, consider making this use just locations[0]..","commit_id":"5fe2104f4c01926418111d1551f11d4374b29bc9"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"58740bda14f64971f4d30635cfb0b408ef025180","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            \"sudo crudini --set ceph.conf client \\\"client oc size\\\" 20971520\")"},{"line_number":392,"context_line":"        if not isinstance(locations, list):"},{"line_number":393,"context_line":"            locations \u003d [locations]"},{"line_number":394,"context_line":"        for location in locations:"},{"line_number":395,"context_line":"            remote_client.exec_command("},{"line_number":396,"context_line":"                \"sudo crudini --set ceph.conf client \\\"mon host\\\" {}\""},{"line_number":397,"context_line":"                .format(location.split(\u0027:/\u0027)[0]))"},{"line_number":398,"context_line":"        return access"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def wait_for_active_instance(self, instance_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_81896ecb","line":397,"range":{"start_line":394,"start_character":8,"end_line":397,"end_character":49},"in_reply_to":"ff570b3c_bed773ee","updated":"2020-06-01 13:15:02.000000000","message":"Done","commit_id":"5fe2104f4c01926418111d1551f11d4374b29bc9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6c7e34a4236b71a374ee321341ba1dde2d79a27d","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        if not isinstance(locations, list):"},{"line_number":395,"context_line":"            locations \u003d [locations]"},{"line_number":396,"context_line":"        remote_client.exec_command("},{"line_number":397,"context_line":"                \"sudo crudini --set ceph.conf client \\\"mon host\\\" {}\""},{"line_number":398,"context_line":"                .format(locations[0].split(\u0027:/\u0027)[0]))"},{"line_number":399,"context_line":"        return access"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ff570b3c_2277bda2","line":397,"updated":"2020-06-01 15:28:00.000000000","message":"pep8: E126 continuation line over-indented for hanging indent","commit_id":"236a0edeb08e78685df9035f001a43e152257bfa"}],"manila_tempest_tests/tests/scenario/test_share_basic_ops.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1ebbff6b749f53ff29fbd85cbeaf09c0f0f8a1a1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        remote_client \u003d self.init_remote_client(instance)"},{"line_number":69,"context_line":"        self.provide_access_to_auxiliary_instance(instance)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        for location in locations:"},{"line_number":72,"context_line":"            self.mount_share(location, remote_client)"},{"line_number":73,"context_line":"            self.unmount_share(remote_client)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @tc.attr(base.TAG_NEGATIVE, base.TAG_BACKEND)"},{"line_number":76,"context_line":"    def test_write_with_ro_access(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_6b10bfa9","side":"PARENT","line":73,"range":{"start_line":71,"start_character":8,"end_line":73,"end_character":45},"updated":"2020-05-06 22:57:21.000000000","message":"Here we\u0027re testing that all export locations are mountable.. you should preserve this behavior","commit_id":"7636a1fce4c2b49a03338097f110fadbb3f81206"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"7c2d1acc35ef71c19a69d57f93ad06a316bb3ffe","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        for location in locations:"},{"line_number":72,"context_line":"            self.mount_share(location, remote_client)"},{"line_number":73,"context_line":"            self.unmount_share(remote_client)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @tc.attr(base.TAG_NEGATIVE, base.TAG_BACKEND)"},{"line_number":76,"context_line":"    def test_write_with_ro_access(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_c4073d1d","side":"PARENT","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":45},"updated":"2020-05-07 11:29:37.000000000","message":"Ok","commit_id":"7636a1fce4c2b49a03338097f110fadbb3f81206"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1ebbff6b749f53ff29fbd85cbeaf09c0f0f8a1a1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    @classmethod"},{"line_number":48,"context_line":"    def skip_checks(cls):"},{"line_number":49,"context_line":"        super(ShareBasicOpsBase, cls).skip_checks()"},{"line_number":50,"context_line":"        if (cls.protocol not in CONF.share.enable_ip_rules_for_protocols) and \\"},{"line_number":51,"context_line":"                cls.protocol !\u003d \"cephfs\":"},{"line_number":52,"context_line":"            message \u003d (\"%s tests for access rules other than IP are disabled\" %"},{"line_number":53,"context_line":"                       cls.protocol)"},{"line_number":54,"context_line":"            raise cls.skipException(message)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _ping_host_from_export_location(self, export, remote_client):"},{"line_number":57,"context_line":"        ip, version \u003d self.get_ip_and_version_from_export_location(export)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_6b371f4f","line":54,"range":{"start_line":50,"start_character":8,"end_line":54,"end_character":44},"updated":"2020-05-06 22:57:21.000000000","message":"Should take the protocol stuff out of the base class. \n\nCan you move the \"cls.protocol not in CONF.share.enable_ip_rules_for_protocols\" check down to NFS and CIFS classes?\n\nThe rest of the skips are handled by the checks in ShareScenarioTest\n\nShareBasicOpsBase is an abstract test class in a sense, thanks to us preventing the test loader from loading it, at the end of this module - so we should limit it to common test functionality..","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1ebbff6b749f53ff29fbd85cbeaf09c0f0f8a1a1","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        location \u003d self.get_user_export_locations(self.share)[0]"},{"line_number":68,"context_line":"        instance \u003d self.wait_for_active_instance(instance[\"id\"])"},{"line_number":69,"context_line":"        remote_client \u003d self.init_remote_client(instance)"},{"line_number":70,"context_line":"        if self.protocol \u003d\u003d \u0027cephfs\u0027:"},{"line_number":71,"context_line":"            self.provide_access_to_client_identified_by_cephx("},{"line_number":72,"context_line":"                remote_client\u003dremote_client, location\u003dlocation)"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            self.provide_access_to_auxiliary_instance(instance)"},{"line_number":75,"context_line":"        self.mount_share(location, remote_client)"},{"line_number":76,"context_line":"        self.addCleanup(self.unmount_share, remote_client)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_eb420fab","line":74,"range":{"start_line":70,"start_character":8,"end_line":74,"end_character":63},"updated":"2020-05-06 22:57:21.000000000","message":"Worth adding an \"allow_access\" method in the subclasses to handle this, and invoke that here, like mount and unmount..","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"7c2d1acc35ef71c19a69d57f93ad06a316bb3ffe","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        location \u003d self.get_user_export_locations(self.share)[0]"},{"line_number":68,"context_line":"        instance \u003d self.wait_for_active_instance(instance[\"id\"])"},{"line_number":69,"context_line":"        remote_client \u003d self.init_remote_client(instance)"},{"line_number":70,"context_line":"        if self.protocol \u003d\u003d \u0027cephfs\u0027:"},{"line_number":71,"context_line":"            self.provide_access_to_client_identified_by_cephx("},{"line_number":72,"context_line":"                remote_client\u003dremote_client, location\u003dlocation)"},{"line_number":73,"context_line":"        else:"},{"line_number":74,"context_line":"            self.provide_access_to_auxiliary_instance(instance)"},{"line_number":75,"context_line":"        self.mount_share(location, remote_client)"},{"line_number":76,"context_line":"        self.addCleanup(self.unmount_share, remote_client)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_d449b0b7","line":74,"range":{"start_line":70,"start_character":8,"end_line":74,"end_character":63},"in_reply_to":"1f493fa4_eb420fab","updated":"2020-05-07 11:29:37.000000000","message":"Yes, I agree it looks bad, I thought about it, but we\u0027ll need to pass \"remote_client\" and \"location\" parameters although we do not really use them in \"cifs\" and \"nfs\" classes and for \"cephfs\" we do use \"instance\" parameter.\nBut it worth it","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1ebbff6b749f53ff29fbd85cbeaf09c0f0f8a1a1","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":457,"context_line":"        location \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":458,"context_line":"        remote_client.exec_command("},{"line_number":459,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":460,"context_line":"            f\"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{location}\""},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_0bbf7bfb","line":459,"range":{"start_line":459,"start_character":19,"end_line":459,"end_character":29},"updated":"2020-05-06 22:57:21.000000000","message":"Any reason not to use the kernel client?","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"7c2d1acc35ef71c19a69d57f93ad06a316bb3ffe","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":457,"context_line":"        location \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":458,"context_line":"        remote_client.exec_command("},{"line_number":459,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":460,"context_line":"            f\"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{location}\""},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_872417b1","line":459,"range":{"start_line":459,"start_character":19,"end_line":459,"end_character":29},"in_reply_to":"1f493fa4_0bbf7bfb","updated":"2020-05-07 11:29:37.000000000","message":"This patch is based on a document Vida provided me.\nAs I understood this is the way to mount a share on this backend.","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"296aa9b23dc3820f8f4c984d5cb52750d2bc3588","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":457,"context_line":"        location \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":458,"context_line":"        remote_client.exec_command("},{"line_number":459,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":460,"context_line":"            f\"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{location}\""},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_5a750a98","line":459,"range":{"start_line":459,"start_character":19,"end_line":459,"end_character":29},"in_reply_to":"1f493fa4_7146dc7e","updated":"2020-05-10 08:52:46.000000000","message":"We can run it twice once with ceph-fuse and once with kernel client\nby using ddt.","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"07132492423a9b7bb3f99620eeb1e6420511643c","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":457,"context_line":"        location \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":458,"context_line":"        remote_client.exec_command("},{"line_number":459,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":460,"context_line":"            f\"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{location}\""},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_7146dc7e","line":459,"range":{"start_line":459,"start_character":19,"end_line":459,"end_character":29},"in_reply_to":"1f493fa4_872417b1","updated":"2020-05-07 19:33:01.000000000","message":"It is one of the ways to do that. Lets start with this; and see if we want to test the kernel client with a config opt as an enhancement later..","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"750c8268848aaecf44598bb59b5eb60530208abb","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":457,"context_line":"        location \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":458,"context_line":"        remote_client.exec_command("},{"line_number":459,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":460,"context_line":"            f\"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{location}\""},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_f9a977df","line":459,"range":{"start_line":459,"start_character":19,"end_line":459,"end_character":29},"in_reply_to":"ff570b3c_5a750a98","updated":"2020-05-11 20:27:52.000000000","message":"ack, yes. That would be a good option!","commit_id":"1d67006f80bb518f97a51cbc00128dcc15d21322"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1e7aaed1bb26c96d6fad15ccf9d0fdfcf7c36fbd","unresolved":false,"context_lines":[{"line_number":457,"context_line":"    protocol \u003d \"cephfs\""},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":460,"context_line":"    @ddt.data(\u0027fuse\u0027)"},{"line_number":461,"context_line":"    def test_mount_share_one_vm(self, mount_client):"},{"line_number":462,"context_line":"        self.mount_client \u003d mount_client"},{"line_number":463,"context_line":"        super(TestShareBasicOpsCEPHFS, self).test_mount_share_one_vm()"},{"line_number":464,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_8da1dc49","line":461,"range":{"start_line":460,"start_character":0,"end_line":461,"end_character":52},"updated":"2020-05-27 21:58:01.000000000","message":"this needn\u0027t be done with ddt. Although it works, it may be weird to someone who reads this to see the use of ddt with only one parameter. \n\nThis class inherits all the test cases from ShareBasicOpsBase, so, if you wanted to extend them to do ceph-fuse testing, you could also create newer test cases like this:\n\n def test_mount_share_one_vm_with_ceph_fuse_client():\n     self.mount_client \u003d \u0027fuse\u0027\n      super(TestShareBasicOpsCEPHFS, self).test_mount_share_one_vm()\n\n\nWouldn\u0027t that be cleaner?","commit_id":"81c76990c889fee2f185aa8dace89a3d6b491df9"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e6d9c42e7cf195bbf3dd7a0760440e99f2a3728b","unresolved":false,"context_lines":[{"line_number":457,"context_line":"    protocol \u003d \"cephfs\""},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":460,"context_line":"    @ddt.data(\u0027fuse\u0027)"},{"line_number":461,"context_line":"    def test_mount_share_one_vm(self, mount_client):"},{"line_number":462,"context_line":"        self.mount_client \u003d mount_client"},{"line_number":463,"context_line":"        super(TestShareBasicOpsCEPHFS, self).test_mount_share_one_vm()"},{"line_number":464,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_44031674","line":461,"range":{"start_line":460,"start_character":0,"end_line":461,"end_character":52},"in_reply_to":"ff570b3c_8da1dc49","updated":"2020-05-28 09:46:02.000000000","message":"Yes, it\u0027s It\u0027s definitely more readable.\nThanks","commit_id":"81c76990c889fee2f185aa8dace89a3d6b491df9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1e7aaed1bb26c96d6fad15ccf9d0fdfcf7c36fbd","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def _fuse_client(self, mountpoint, remote_client, target_dir, access_to):"},{"line_number":483,"context_line":"        remote_client.exec_command("},{"line_number":484,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} \""},{"line_number":485,"context_line":"            f\"--conf\u003dceph.conf --keyring\u003d{access_to}.keyring \""},{"line_number":486,"context_line":"            f\"--client-mountpoint\u003d{mountpoint}\")"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_6d628818","line":484,"range":{"start_line":484,"start_character":12,"end_line":484,"end_character":14},"updated":"2020-05-27 21:58:01.000000000","message":"A word of warning in general, we no longer support python2 with manila-tempest-plugin, but, I know consumers still deploy testing with python2 against older branches of OpenStack (ex: Infrared with OSP 13). So this will fail there.. \n\nFor one, if this merges as is, we won\u0027t be running CephFS scenario tests against the stable/queens and stable/rocky branches even though in theory they should work - just because we don\u0027t want to mess with setting up a python3 environment to run the tests against a cloud running on python2.\n\nSo in case you want this to be compatible with python2, I would stray away from f-strings..","commit_id":"81c76990c889fee2f185aa8dace89a3d6b491df9"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"e6d9c42e7cf195bbf3dd7a0760440e99f2a3728b","unresolved":false,"context_lines":[{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def _fuse_client(self, mountpoint, remote_client, target_dir, access_to):"},{"line_number":483,"context_line":"        remote_client.exec_command("},{"line_number":484,"context_line":"            f\"sudo ceph-fuse {target_dir} --id\u003d{access_to} \""},{"line_number":485,"context_line":"            f\"--conf\u003dceph.conf --keyring\u003d{access_to}.keyring \""},{"line_number":486,"context_line":"            f\"--client-mountpoint\u003d{mountpoint}\")"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_e76d0c99","line":484,"range":{"start_line":484,"start_character":12,"end_line":484,"end_character":14},"in_reply_to":"ff570b3c_6d628818","updated":"2020-05-28 09:46:02.000000000","message":"Yes, we have to support both versions.","commit_id":"81c76990c889fee2f185aa8dace89a3d6b491df9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ea47b103594761b3301627889c211fe352b5367","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        return self.provide_access_to_client_identified_by_cephx("},{"line_number":476,"context_line":"            remote_client\u003dkwargs[\u0027remote_client\u0027],"},{"line_number":477,"context_line":"            locations\u003dkwargs[\u0027locations\u0027], access_level\u003daccess_level,"},{"line_number":478,"context_line":"            share\u003dkwargs[\u0027share\u0027], mount_client\u003dmount_client)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def _fuse_client(self, mountpoint, remote_client, target_dir, access_to):"},{"line_number":481,"context_line":"        remote_client.exec_command("}],"source_content_type":"text/x-python","patch_set":11,"id":"ff570b3c_c58ff927","line":478,"range":{"start_line":478,"start_character":12,"end_line":478,"end_character":33},"updated":"2020-05-31 19:34:15.000000000","message":"you\u0027re not passing this, so this results in a KeyError;\nsince init_remote_client() is always called before allow_access, it\u0027d\u0027ve set the necessary share in self.share... so perhaps remove this from here?","commit_id":"716a0ef00fe126aef0e5034577e3d21d1fa45383"}],"manila_tempest_tests/tests/scenario/test_share_extend.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"525203181ebff70c7c47d3c19c54287089a9b02a","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        self.mount_client \u003d \u0027fuse\u0027"},{"line_number":199,"context_line":"        super(TestShareExtendCEPHFS, self).test_create_extend_and_write()"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def allow_access(self, access_level\u003d\u0027rw\u0027, **kwargs):"},{"line_number":202,"context_line":"        return self.provide_access_to_client_identified_by_cephx("},{"line_number":203,"context_line":"            remote_client\u003dkwargs[\u0027remote_client\u0027],"},{"line_number":204,"context_line":"            locations\u003dkwargs[\u0027locations\u0027], access_level\u003daccess_level,"},{"line_number":205,"context_line":"            share\u003dkwargs[\u0027share\u0027])"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def _fuse_client(self, mountpoint, remote_client, target_dir, access_to):"},{"line_number":208,"context_line":"        remote_client.exec_command("},{"line_number":209,"context_line":"            \"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":210,"context_line":"            \"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{mountpoint}\""},{"line_number":211,"context_line":"            .format(target_dir\u003dtarget_dir, access_to\u003daccess_to,"},{"line_number":212,"context_line":"                    mountpoint\u003dmountpoint))"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def mount_share(self, location, remote_client, target_dir\u003dNone,"},{"line_number":215,"context_line":"                    access_to\u003dNone):"},{"line_number":216,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":217,"context_line":"        access_to \u003d access_to or self.access_to"},{"line_number":218,"context_line":"        mountpoint \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":219,"context_line":"        if getattr(self, \u0027mount_client\u0027, None):"},{"line_number":220,"context_line":"            return self._fuse_client(mountpoint, remote_client, target_dir,"},{"line_number":221,"context_line":"                                     access_to\u003daccess_to)"},{"line_number":222,"context_line":"        remote_client.exec_command("},{"line_number":223,"context_line":"            \"sudo mount -t ceph {location} {target_dir} -o name\u003d{access_to},\""},{"line_number":224,"context_line":"            \"secret\u003d{access_key}\""},{"line_number":225,"context_line":"            .format(location\u003dlocation, target_dir\u003dtarget_dir,"},{"line_number":226,"context_line":"                    access_to\u003daccess_to, access_key\u003dself.access_key))"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def unmount_share(self, remote_client, target_dir\u003dNone):"},{"line_number":229,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":230,"context_line":"        if getattr(self, \u0027mount_client\u0027, None):"},{"line_number":231,"context_line":"            return remote_client.exec_command("},{"line_number":232,"context_line":"                \"sudo fusermount -uz %s\" % target_dir)"},{"line_number":233,"context_line":"        super(TestShareExtendCEPHFS, self).unmount_share(remote_client)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"# NOTE(u_glide): this function is required to exclude ShareExtendBase"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_de306759","line":233,"range":{"start_line":201,"start_character":0,"end_line":233,"end_character":71},"updated":"2020-06-01 12:10:41.000000000","message":"This is repeated across classes, perhaps move this to a Mixin/abstract base class in manila_tempest_tests/tests/scenario/manager_share.py and inherit that into all the three scenario test classes where you need it..","commit_id":"5fe2104f4c01926418111d1551f11d4374b29bc9"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"58740bda14f64971f4d30635cfb0b408ef025180","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        self.mount_client \u003d \u0027fuse\u0027"},{"line_number":199,"context_line":"        super(TestShareExtendCEPHFS, self).test_create_extend_and_write()"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def allow_access(self, access_level\u003d\u0027rw\u0027, **kwargs):"},{"line_number":202,"context_line":"        return self.provide_access_to_client_identified_by_cephx("},{"line_number":203,"context_line":"            remote_client\u003dkwargs[\u0027remote_client\u0027],"},{"line_number":204,"context_line":"            locations\u003dkwargs[\u0027locations\u0027], access_level\u003daccess_level,"},{"line_number":205,"context_line":"            share\u003dkwargs[\u0027share\u0027])"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def _fuse_client(self, mountpoint, remote_client, target_dir, access_to):"},{"line_number":208,"context_line":"        remote_client.exec_command("},{"line_number":209,"context_line":"            \"sudo ceph-fuse {target_dir} --id\u003d{access_to} --conf\u003dceph.conf \""},{"line_number":210,"context_line":"            \"--keyring\u003d{access_to}.keyring --client-mountpoint\u003d{mountpoint}\""},{"line_number":211,"context_line":"            .format(target_dir\u003dtarget_dir, access_to\u003daccess_to,"},{"line_number":212,"context_line":"                    mountpoint\u003dmountpoint))"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def mount_share(self, location, remote_client, target_dir\u003dNone,"},{"line_number":215,"context_line":"                    access_to\u003dNone):"},{"line_number":216,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":217,"context_line":"        access_to \u003d access_to or self.access_to"},{"line_number":218,"context_line":"        mountpoint \u003d location.split(\u0027:\u0027)[-1]"},{"line_number":219,"context_line":"        if getattr(self, \u0027mount_client\u0027, None):"},{"line_number":220,"context_line":"            return self._fuse_client(mountpoint, remote_client, target_dir,"},{"line_number":221,"context_line":"                                     access_to\u003daccess_to)"},{"line_number":222,"context_line":"        remote_client.exec_command("},{"line_number":223,"context_line":"            \"sudo mount -t ceph {location} {target_dir} -o name\u003d{access_to},\""},{"line_number":224,"context_line":"            \"secret\u003d{access_key}\""},{"line_number":225,"context_line":"            .format(location\u003dlocation, target_dir\u003dtarget_dir,"},{"line_number":226,"context_line":"                    access_to\u003daccess_to, access_key\u003dself.access_key))"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def unmount_share(self, remote_client, target_dir\u003dNone):"},{"line_number":229,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":230,"context_line":"        if getattr(self, \u0027mount_client\u0027, None):"},{"line_number":231,"context_line":"            return remote_client.exec_command("},{"line_number":232,"context_line":"                \"sudo fusermount -uz %s\" % target_dir)"},{"line_number":233,"context_line":"        super(TestShareExtendCEPHFS, self).unmount_share(remote_client)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"# NOTE(u_glide): this function is required to exclude ShareExtendBase"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_e1682af6","line":233,"range":{"start_line":201,"start_character":0,"end_line":233,"end_character":71},"in_reply_to":"ff570b3c_de306759","updated":"2020-06-01 13:15:02.000000000","message":"Absolutely required.\nDone","commit_id":"5fe2104f4c01926418111d1551f11d4374b29bc9"}]}
