)]}'
{"manila_tempest_tests/tests/scenario/test_create_extend_share.py":[{"author":{"_account_id":18142,"name":"David Sariel","email":"dsariel@redhat.com","username":"dsariel"},"change_message_id":"66d23b20350d833f07e2da984be7591ee8c0e026","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                                data)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def write_data_with_dd(self, block_count, filename, ssh_client):"},{"line_number":140,"context_line":"        ssh_client.exec_command(\"sudo sh -c \\\"dd bs\u003d1024 count\u003d%s\""},{"line_number":141,"context_line":"                                \" \u003c/dev/zero \u003e /mnt/%s\\\"\" %"},{"line_number":142,"context_line":"                                (block_count, filename))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def read_data(self, ssh_client):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_3e81734b","line":141,"range":{"start_line":140,"start_character":46,"end_line":141,"end_character":55},"updated":"2018-01-14 07:59:19.000000000","message":"What is supposed to be tested here? Is \u0027fallocate -l 1G finame\u0027 sufficient here? Or actual write to the backend is meant to be verified? In later case maybe it worth adding something like https://unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system\n\n@dschoenb, what\u0027s your take on this? Thanks!","commit_id":"c6b18600272aab296d4d6d8dc6b83204b7ceb2a3"},{"author":{"_account_id":18142,"name":"David Sariel","email":"dsariel@redhat.com","username":"dsariel"},"change_message_id":"66d23b20350d833f07e2da984be7591ee8c0e026","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    protocol \u003d None"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def setUp(self):"},{"line_number":55,"context_line":"        super(ShareCreateExtendBase, self).setUp()"},{"line_number":56,"context_line":"        base.verify_test_has_appropriate_tags(self)"},{"line_number":57,"context_line":"        self.image_ref \u003d None"},{"line_number":58,"context_line":"        # Setup image and flavor the test instance"},{"line_number":59,"context_line":"        # Support both configured and injected values"},{"line_number":60,"context_line":"        self.floatings \u003d {}"},{"line_number":61,"context_line":"        if self.protocol not in CONF.share.enable_protocols:"},{"line_number":62,"context_line":"            message \u003d \"%s tests are disabled\" % self.protocol"},{"line_number":63,"context_line":"            raise self.skipException(message)"},{"line_number":64,"context_line":"        if self.protocol not in CONF.share.enable_ip_rules_for_protocols:"},{"line_number":65,"context_line":"            message \u003d (\"%s tests for access rules other than IP are disabled\" %"},{"line_number":66,"context_line":"                       self.protocol)"},{"line_number":67,"context_line":"            raise self.skipException(message)"},{"line_number":68,"context_line":"        if not hasattr(self, \u0027flavor_ref\u0027):"},{"line_number":69,"context_line":"            self.flavor_ref \u003d CONF.share.client_vm_flavor_ref"},{"line_number":70,"context_line":"        if CONF.share.image_with_share_tools:"},{"line_number":71,"context_line":"            images \u003d self.compute_images_client.list_images()[\"images\"]"},{"line_number":72,"context_line":"            for img in images:"},{"line_number":73,"context_line":"                if img[\"name\"] \u003d\u003d CONF.share.image_with_share_tools:"},{"line_number":74,"context_line":"                    self.image_ref \u003d img[\u0027id\u0027]"},{"line_number":75,"context_line":"                    break"},{"line_number":76,"context_line":"            if not self.image_ref:"},{"line_number":77,"context_line":"                msg \u003d (\"Image %s not found\" %"},{"line_number":78,"context_line":"                       CONF.share.image_with_share_tools)"},{"line_number":79,"context_line":"                raise exceptions.InvalidConfiguration(message\u003dmsg)"},{"line_number":80,"context_line":"        self.ssh_user \u003d CONF.share.image_username"},{"line_number":81,"context_line":"        LOG.debug(\u0027Starting test for i:{image}, f:{flavor}. \u0027"},{"line_number":82,"context_line":"                  \u0027user: {ssh_user}\u0027.format("},{"line_number":83,"context_line":"                      image\u003dself.image_ref, flavor\u003dself.flavor_ref,"},{"line_number":84,"context_line":"                      ssh_user\u003dself.ssh_user))"},{"line_number":85,"context_line":"        self.security_group \u003d self._create_security_group()"},{"line_number":86,"context_line":"        self.create_share_network()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def boot_instance(self, wait_until\u003d\"ACTIVE\"):"},{"line_number":89,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":90,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"},{"line_number":91,"context_line":"        create_kwargs \u003d {"},{"line_number":92,"context_line":"            \u0027key_name\u0027: self.keypair[\u0027name\u0027],"},{"line_number":93,"context_line":"            \u0027security_groups\u0027: security_groups,"},{"line_number":94,"context_line":"            \u0027wait_until\u0027: wait_until,"},{"line_number":95,"context_line":"        }"},{"line_number":96,"context_line":"        if CONF.share.multitenancy_enabled:"},{"line_number":97,"context_line":"            create_kwargs[\u0027networks\u0027] \u003d [{\u0027uuid\u0027: self.net[\u0027id\u0027]}, ]"},{"line_number":98,"context_line":"        instance \u003d self.create_server("},{"line_number":99,"context_line":"            image_id\u003dself.image_ref, flavor\u003dself.flavor_ref, **create_kwargs)"},{"line_number":100,"context_line":"        return instance"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def init_ssh(self, instance, do_ping\u003dFalse):"},{"line_number":103,"context_line":"        # Obtain a floating IP"},{"line_number":104,"context_line":"        floating_ip \u003d (self.compute_floating_ips_client.create_floating_ip()"},{"line_number":105,"context_line":"                       [\u0027floating_ip\u0027])"},{"line_number":106,"context_line":"        self.floatings[instance[\u0027id\u0027]] \u003d floating_ip"},{"line_number":107,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":108,"context_line":"                        self.compute_floating_ips_client.delete_floating_ip,"},{"line_number":109,"context_line":"                        floating_ip[\u0027id\u0027])"},{"line_number":110,"context_line":"        # Attach a floating IP"},{"line_number":111,"context_line":"        self.compute_floating_ips_client.associate_floating_ip_to_server("},{"line_number":112,"context_line":"            floating_ip[\u0027ip\u0027], instance[\u0027id\u0027])"},{"line_number":113,"context_line":"        # Check ssh"},{"line_number":114,"context_line":"        ssh_client \u003d self.get_remote_client("},{"line_number":115,"context_line":"            server_or_ip\u003dfloating_ip[\u0027ip\u0027],"},{"line_number":116,"context_line":"            username\u003dself.ssh_user,"},{"line_number":117,"context_line":"            private_key\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # NOTE(u_glide): Workaround for bug #1465682"},{"line_number":120,"context_line":"        ssh_client \u003d ssh_client.ssh_client"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.share \u003d self.shares_client.get_share(self.share[\u0027id\u0027])"},{"line_number":123,"context_line":"        if do_ping:"},{"line_number":124,"context_line":"            server_ip \u003d self.share[\u0027export_location\u0027].split(\":\")[0]"},{"line_number":125,"context_line":"            ssh_client.exec_command(\"ping -c 1 %s\" % server_ip)"},{"line_number":126,"context_line":"        return ssh_client"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def mount_share(self, location, ssh_client, target_dir\u003dNone):"},{"line_number":129,"context_line":"        raise NotImplementedError"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def umount_share(self, ssh_client, target_dir\u003dNone):"},{"line_number":132,"context_line":"        target_dir \u003d target_dir or \"/mnt\""},{"line_number":133,"context_line":"        ssh_client.exec_command(\"sudo umount %s\" % target_dir)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def write_data(self, data, ssh_client):"},{"line_number":136,"context_line":"        ssh_client.exec_command(\"echo \\\"%s\\\" | sudo tee /mnt/t1 \u0026\u0026 sudo sync\" %"},{"line_number":137,"context_line":"                                data)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def write_data_with_dd(self, block_count, filename, ssh_client):"},{"line_number":140,"context_line":"        ssh_client.exec_command(\"sudo sh -c \\\"dd bs\u003d1024 count\u003d%s\""},{"line_number":141,"context_line":"                                \" \u003c/dev/zero \u003e /mnt/%s\\\"\" %"},{"line_number":142,"context_line":"                                (block_count, filename))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def read_data(self, ssh_client):"},{"line_number":145,"context_line":"        data \u003d ssh_client.exec_command(\"sudo cat /mnt/t1\")"},{"line_number":146,"context_line":"        return data.rstrip()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def create_share_network(self):"},{"line_number":149,"context_line":"        self.net \u003d self._create_network(namestart\u003d\"manila-share\")"},{"line_number":150,"context_line":"        self.subnet \u003d self._create_subnet(network\u003dself.net,"},{"line_number":151,"context_line":"                                          namestart\u003d\"manila-share-sub\")"},{"line_number":152,"context_line":"        router \u003d self._get_router()"},{"line_number":153,"context_line":"        self._create_router_interface(subnet_id\u003dself.subnet[\u0027id\u0027],"},{"line_number":154,"context_line":"                                      router_id\u003drouter[\u0027id\u0027])"},{"line_number":155,"context_line":"        self.share_net \u003d self._create_share_network("},{"line_number":156,"context_line":"            neutron_net_id\u003dself.net[\u0027id\u0027],"},{"line_number":157,"context_line":"            neutron_subnet_id\u003dself.subnet[\u0027id\u0027],"},{"line_number":158,"context_line":"            name\u003ddata_utils.rand_name(\"sn-name\"))"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def _get_share_type(self):"},{"line_number":161,"context_line":"        if CONF.share.default_share_type_name:"},{"line_number":162,"context_line":"            return self.shares_client.get_share_type("},{"line_number":163,"context_line":"                CONF.share.default_share_type_name)[\u0027share_type\u0027]"},{"line_number":164,"context_line":"        return self._create_share_type("},{"line_number":165,"context_line":"            data_utils.rand_name(\"share_type\"),"},{"line_number":166,"context_line":"            extra_specs\u003d{"},{"line_number":167,"context_line":"                \u0027snapshot_support\u0027: CONF.share.capability_snapshot_support,"},{"line_number":168,"context_line":"                \u0027driver_handles_share_servers\u0027: CONF.share.multitenancy_enabled"},{"line_number":169,"context_line":"            },)[\u0027share_type\u0027]"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def create_share(self, **kwargs):"},{"line_number":172,"context_line":"        kwargs.update({"},{"line_number":173,"context_line":"            \u0027share_protocol\u0027: self.protocol,"},{"line_number":174,"context_line":"        })"},{"line_number":175,"context_line":"        if not (\u0027share_type_id\u0027 in kwargs or \u0027snapshot_id\u0027 in kwargs):"},{"line_number":176,"context_line":"            kwargs.update({\u0027share_type_id\u0027: self._get_share_type()[\u0027id\u0027]})"},{"line_number":177,"context_line":"        if CONF.share.multitenancy_enabled:"},{"line_number":178,"context_line":"            kwargs.update({\u0027share_network_id\u0027: self.share_net[\u0027id\u0027]})"},{"line_number":179,"context_line":"        self.share \u003d self._create_share(**kwargs)"},{"line_number":180,"context_line":"        return self.share"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def allow_access_ip(self, share_id, ip\u003dNone, instance\u003dNone, cleanup\u003dTrue,"},{"line_number":183,"context_line":"                        snapshot\u003dNone):"},{"line_number":184,"context_line":"        if instance and not ip:"},{"line_number":185,"context_line":"            try:"},{"line_number":186,"context_line":"                net_addresses \u003d instance[\u0027addresses\u0027]"},{"line_number":187,"context_line":"                first_address \u003d net_addresses.values()[0][0]"},{"line_number":188,"context_line":"                ip \u003d first_address[\u0027addr\u0027]"},{"line_number":189,"context_line":"            except Exception:"},{"line_number":190,"context_line":"                LOG.debug(\"Instance: %s\", instance)"},{"line_number":191,"context_line":"                # In case on an error ip will be still none"},{"line_number":192,"context_line":"                LOG.exception(\"Instance does not have a valid IP address.\""},{"line_number":193,"context_line":"                              \"Falling back to default\")"},{"line_number":194,"context_line":"        if not ip:"},{"line_number":195,"context_line":"            ip \u003d \u00270.0.0.0/0\u0027"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        if snapshot:"},{"line_number":198,"context_line":"            self._allow_access_snapshot(snapshot[\u0027id\u0027], access_type\u003d\u0027ip\u0027,"},{"line_number":199,"context_line":"                                        access_to\u003dip, cleanup\u003dcleanup)"},{"line_number":200,"context_line":"        else:"},{"line_number":201,"context_line":"            self._allow_access(share_id, access_type\u003d\u0027ip\u0027, access_to\u003dip,"},{"line_number":202,"context_line":"                               cleanup\u003dcleanup)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def provide_access_to_auxiliary_instance(self, instance, share\u003dNone,"},{"line_number":205,"context_line":"                                             snapshot\u003dNone):"},{"line_number":206,"context_line":"        share \u003d share or self.share"},{"line_number":207,"context_line":"        if self.protocol.lower() \u003d\u003d \u0027cifs\u0027:"},{"line_number":208,"context_line":"            self.allow_access_ip("},{"line_number":209,"context_line":"                share[\u0027id\u0027], instance\u003dinstance, cleanup\u003dFalse,"},{"line_number":210,"context_line":"                snapshot\u003dsnapshot)"},{"line_number":211,"context_line":"        elif not CONF.share.multitenancy_enabled:"},{"line_number":212,"context_line":"            self.allow_access_ip("},{"line_number":213,"context_line":"                share[\u0027id\u0027], ip\u003dself.floatings[instance[\u0027id\u0027]][\u0027ip\u0027],"},{"line_number":214,"context_line":"                instance\u003dinstance, cleanup\u003dFalse, snapshot\u003dsnapshot)"},{"line_number":215,"context_line":"        elif (CONF.share.multitenancy_enabled and"},{"line_number":216,"context_line":"              self.protocol.lower() \u003d\u003d \u0027nfs\u0027):"},{"line_number":217,"context_line":"            self.allow_access_ip("},{"line_number":218,"context_line":"                share[\u0027id\u0027], instance\u003dinstance, cleanup\u003dFalse,"},{"line_number":219,"context_line":"                snapshot\u003dsnapshot)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def wait_for_active_instance(self, instance_id):"},{"line_number":222,"context_line":"        waiters.wait_for_server_status("},{"line_number":223,"context_line":"            self.os_primary.servers_client, instance_id, \"ACTIVE\")"},{"line_number":224,"context_line":"        return self.os_primary.servers_client.show_server("},{"line_number":225,"context_line":"            instance_id)[\"server\"]"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f96bb07_3e73b3b3","line":224,"range":{"start_line":54,"start_character":0,"end_line":224,"end_character":32},"updated":"2018-01-14 07:59:19.000000000","message":"How about moving those lines that are common to ShareBasicOpsBase and your new class  to the ShareScenarioTest?","commit_id":"c6b18600272aab296d4d6d8dc6b83204b7ceb2a3"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"2f29be90b1e5fc51956bf0abb2ce3c8f7a3343c8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        LOG.debug(\u0027Step 4 - grant access\u0027)"},{"line_number":63,"context_line":"        self.provide_access_to_auxiliary_instance(instance, share\u003dshare)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        if utils.is_microversion_lt(CONF.share.max_api_microversion, \"2.9\"):"},{"line_number":66,"context_line":"            locations \u003d share[\u0027export_locations\u0027]"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":69,"context_line":"                share[\u0027id\u0027])"},{"line_number":70,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        for location in locations:"},{"line_number":73,"context_line":"            LOG.debug(\u0027Step 5 - Location \u0027 + str(location))"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_3dc88c1f","line":70,"range":{"start_line":65,"start_character":8,"end_line":70,"end_character":52},"updated":"2018-09-14 16:00:31.000000000","message":"I saw this here as well: https://git.openstack.org/cgit/openstack/manila-tempest-plugin/tree/manila_tempest_tests/tests/scenario/test_share_manage_unmanage.py?h\u003drefs/changes/95/545695/18#n79\n\nI guess this exact piece of code repeat in some other places as well. If this is a common use case, just export it to a method in the ShareScenarioCase base class (e.g. get_share_export_locations).","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":26535,"name":"Nir Gilboa","email":"gilboa.nir@gmail.com","username":"nirgilbo"},"change_message_id":"a59620d5ab1538c32cf84b55462e341677f8536d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        LOG.debug(\u0027Step 4 - grant access\u0027)"},{"line_number":63,"context_line":"        self.provide_access_to_auxiliary_instance(instance, share\u003dshare)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        if utils.is_microversion_lt(CONF.share.max_api_microversion, \"2.9\"):"},{"line_number":66,"context_line":"            locations \u003d share[\u0027export_locations\u0027]"},{"line_number":67,"context_line":"        else:"},{"line_number":68,"context_line":"            exports \u003d self.shares_v2_client.list_share_export_locations("},{"line_number":69,"context_line":"                share[\u0027id\u0027])"},{"line_number":70,"context_line":"            locations \u003d [x[\u0027path\u0027] for x in exports]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        for location in locations:"},{"line_number":73,"context_line":"            LOG.debug(\u0027Step 5 - Location \u0027 + str(location))"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_464e7e6e","line":70,"range":{"start_line":65,"start_character":8,"end_line":70,"end_character":52},"in_reply_to":"3f79a3b5_3dc88c1f","updated":"2018-10-14 19:39:14.000000000","message":"Agree will extract to a method in the base class.","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"2f29be90b1e5fc51956bf0abb2ce3c8f7a3343c8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            self.mount_share(location, remote_client)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"            # CHECK maybe use write with nothing?"},{"line_number":82,"context_line":"            LOG.debug(\u0027Step 6 - touch\u0027)"},{"line_number":83,"context_line":"            remote_client.exec_command(\"sudo touch /mnt/t1\")"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            LOG.debug(\u0027Step 7 - write data\u0027)"},{"line_number":86,"context_line":"            self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":87,"context_line":"                                                      \u0027/mnt/t1\u0027, 1024,"},{"line_number":88,"context_line":"                                                      624000, \u0027/dev/zero\u0027)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"            LOG.debug(\u0027Step 8 - extend and wait\u0027)"},{"line_number":91,"context_line":"            extended_share_size \u003d share_size * 2"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_1d183082","line":88,"range":{"start_line":82,"start_character":12,"end_line":88,"end_character":74},"updated":"2018-09-14 16:00:31.000000000","message":"I read through the scenario test spec, and I see there\u0027s a separation between file creation and writing data to it. Is there a reason for this?\n\nAlso, please see my comment about this topic here: https://review.openstack.org/#/c/545695/\n\nIn my opinion, if creating a file and writing to it is a common use case, you can subclass ShareScenarioTest or create a mixin with such a method and use it here, instead of duplicating the code between tests.","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"950f07fbcf470f44f67efab8c058a97a824fd367","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            self.mount_share(location, remote_client)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"            # CHECK maybe use write with nothing?"},{"line_number":82,"context_line":"            LOG.debug(\u0027Step 6 - touch\u0027)"},{"line_number":83,"context_line":"            remote_client.exec_command(\"sudo touch /mnt/t1\")"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            LOG.debug(\u0027Step 7 - write data\u0027)"},{"line_number":86,"context_line":"            self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":87,"context_line":"                                                      \u0027/mnt/t1\u0027, 1024,"},{"line_number":88,"context_line":"                                                      624000, \u0027/dev/zero\u0027)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"            LOG.debug(\u0027Step 8 - extend and wait\u0027)"},{"line_number":91,"context_line":"            extended_share_size \u003d share_size * 2"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_57a7d8bb","line":88,"range":{"start_line":82,"start_character":12,"end_line":88,"end_character":74},"in_reply_to":"3f79a3b5_065406fc","updated":"2018-10-16 19:39:59.000000000","message":"Regarding 1: you can bring it up in the next IRC meeting if you\u0027d like: https://wiki.openstack.org/wiki/Manila/Meetings\n\nRegarding 2: if the code will be changed in such a way such that it stays explicit (e.g. explicit method names that encapsulate the shell commands you\u0027re running), I don\u0027t see anything wrong with that.\nIt will change from \"sudo touch ... write_data ...\" to \"create_file_of_size(\"/mnt/t1\", ...)\" (just an idea, of course, you don\u0027t have to agree)\n\nThanks :)","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":26535,"name":"Nir Gilboa","email":"gilboa.nir@gmail.com","username":"nirgilbo"},"change_message_id":"a59620d5ab1538c32cf84b55462e341677f8536d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            self.mount_share(location, remote_client)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"            # CHECK maybe use write with nothing?"},{"line_number":82,"context_line":"            LOG.debug(\u0027Step 6 - touch\u0027)"},{"line_number":83,"context_line":"            remote_client.exec_command(\"sudo touch /mnt/t1\")"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"            LOG.debug(\u0027Step 7 - write data\u0027)"},{"line_number":86,"context_line":"            self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":87,"context_line":"                                                      \u0027/mnt/t1\u0027, 1024,"},{"line_number":88,"context_line":"                                                      624000, \u0027/dev/zero\u0027)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"            LOG.debug(\u0027Step 8 - extend and wait\u0027)"},{"line_number":91,"context_line":"            extended_share_size \u003d share_size * 2"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_065406fc","line":88,"range":{"start_line":82,"start_character":12,"end_line":88,"end_character":74},"in_reply_to":"3f79a3b5_1d183082","updated":"2018-10-14 19:39:14.000000000","message":"1. Also not sure why the separation is mandated. I will try to find out on irc.\n\n2. I\u0027ll try this, but this looks to me less like duplication and more like being explicit about what\u0027s being done.. But I will try :)","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"2f29be90b1e5fc51956bf0abb2ce3c8f7a3343c8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            share \u003d self.shares_admin_v2_client.get_share(share[\"id\"])"},{"line_number":97,"context_line":"            self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            LOG.debug(\u0027Step 9 - write data\u0027)"},{"line_number":100,"context_line":"            self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":101,"context_line":"                                                      \u0027/mnt/t1\u0027, 1024,"},{"line_number":102,"context_line":"                                                      1280000, \u0027/dev/zero\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            LOG.debug(\u0027Step 10 - unmount\u0027)"},{"line_number":105,"context_line":"            self.umount_share(remote_client)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_9d0be029","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":75},"updated":"2018-09-14 16:00:31.000000000","message":"See above.","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"2f29be90b1e5fc51956bf0abb2ce3c8f7a3343c8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        )"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"# NOTE(u_glide): this function is required to exclude ShareManageUnmanageBase"},{"line_number":135,"context_line":"# from executed test cases."},{"line_number":136,"context_line":"# See: https://docs.python.org/2/library/unittest.html#load-tests-protocol"},{"line_number":137,"context_line":"# for details."},{"line_number":138,"context_line":"def load_tests(loader, tests, _):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_3d4dec98","line":135,"range":{"start_line":134,"start_character":0,"end_line":135,"end_character":27},"updated":"2018-09-14 16:00:31.000000000","message":"Please see my comment on this topic here: https://review.openstack.org/#/c/545695/","commit_id":"5c100f61a4316e1abaf65915914d9f9622101932"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9ba20b48e5b191d49bba535148b64907c2a7302e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        LOG.debug(\u0027Step 5 - mount\u0027)"},{"line_number":68,"context_line":"        self.mount_share(locations[0], remote_client)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        LOG.debug(\u0027Step 6 - writing \u003c1GiB\u0027)"},{"line_number":71,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":72,"context_line":"                                                  \u0027/mnt/t1\u0027, \u002764M\u0027,"},{"line_number":73,"context_line":"                                                  10, \u0027/dev/urandom\u0027)"},{"line_number":74,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":75,"context_line":"        LOG.debug(ls_result)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.debug(\u0027Step 7 - extend and wait\u0027)"},{"line_number":78,"context_line":"        extended_share_size \u003d share_size * 2"}],"source_content_type":"text/x-python","patch_set":22,"id":"5fc1f717_f7a034a8","line":75,"range":{"start_line":70,"start_character":0,"end_line":75,"end_character":28},"updated":"2019-03-06 20:52:38.000000000","message":"Maybe you can write this in two parts?\n\nFirst write random data equal to or slight less than share_size, then attempt to write about 100 MB... the second write operation should fail because there isn\u0027t enough space...","commit_id":"867e94afc025cd28a6d3a31af7ca24d423e0e2ae"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d0077a5220768b5b24f0366b95c643a036fd7822","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        LOG.debug(\u0027Step 5 - mount\u0027)"},{"line_number":68,"context_line":"        self.mount_share(locations[0], remote_client)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        LOG.debug(\u0027Step 6 - writing \u003c1GiB\u0027)"},{"line_number":71,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":72,"context_line":"                                                  \u0027/mnt/t1\u0027, \u002764M\u0027,"},{"line_number":73,"context_line":"                                                  10, \u0027/dev/urandom\u0027)"},{"line_number":74,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":75,"context_line":"        LOG.debug(ls_result)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.debug(\u0027Step 7 - extend and wait\u0027)"},{"line_number":78,"context_line":"        extended_share_size \u003d share_size * 2"}],"source_content_type":"text/x-python","patch_set":22,"id":"5fc1f717_f7b7d4d7","line":75,"range":{"start_line":70,"start_character":0,"end_line":75,"end_character":28},"in_reply_to":"5fc1f717_f7a034a8","updated":"2019-03-06 20:55:51.000000000","message":"Make sure your second write operation is going to /mnt/t2 instead of /mnt/t1","commit_id":"867e94afc025cd28a6d3a31af7ca24d423e0e2ae"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9ba20b48e5b191d49bba535148b64907c2a7302e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        LOG.debug(ls_result)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.debug(\u0027Step 7 - extend and wait\u0027)"},{"line_number":78,"context_line":"        extended_share_size \u003d share_size * 2"},{"line_number":79,"context_line":"        self.shares_v2_client.extend_share(share[\"id\"],"},{"line_number":80,"context_line":"                                           new_size\u003dextended_share_size)"},{"line_number":81,"context_line":"        self.shares_v2_client.wait_for_share_status(share[\"id\"],"}],"source_content_type":"text/x-python","patch_set":22,"id":"5fc1f717_d7af3892","line":78,"range":{"start_line":78,"start_character":30,"end_line":78,"end_character":44},"updated":"2019-03-06 20:52:38.000000000","message":"While this should work, share_size+1 should work as well..","commit_id":"867e94afc025cd28a6d3a31af7ca24d423e0e2ae"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9ba20b48e5b191d49bba535148b64907c2a7302e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        LOG.debug(\u0027Step 8 - writing again \u003c1GiB\u0027)"},{"line_number":87,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":88,"context_line":"                                                  \u0027/mnt/t1\u0027, \u002764M\u0027,"},{"line_number":89,"context_line":"                                                  10, \u0027/dev/urandom\u0027)"},{"line_number":90,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":91,"context_line":"        LOG.debug(ls_result)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5fc1f717_579b4871","line":89,"range":{"start_line":87,"start_character":0,"end_line":89,"end_character":69},"updated":"2019-03-06 20:52:38.000000000","message":"Repeat writing the extra bit that fails as suggested above...","commit_id":"867e94afc025cd28a6d3a31af7ca24d423e0e2ae"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d0077a5220768b5b24f0366b95c643a036fd7822","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        LOG.debug(\u0027Step 8 - writing again \u003c1GiB\u0027)"},{"line_number":87,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":88,"context_line":"                                                  \u0027/mnt/t1\u0027, \u002764M\u0027,"},{"line_number":89,"context_line":"                                                  10, \u0027/dev/urandom\u0027)"},{"line_number":90,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":91,"context_line":"        LOG.debug(ls_result)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5fc1f717_37c55c3d","line":89,"range":{"start_line":87,"start_character":0,"end_line":89,"end_character":69},"in_reply_to":"5fc1f717_579b4871","updated":"2019-03-06 20:55:51.000000000","message":"replace /mnt/t1 with /mnt/t3 after you implement the suggestions above.... we can then expect three files... \n\n/mnt/t1 -\u003e size \u003d ~share_size\n/mnt/t2 -\u003e size \u003d \u003c 100 MB\n/mnt/t3 -\u003e size \u003d 100 MB","commit_id":"867e94afc025cd28a6d3a31af7ca24d423e0e2ae"}],"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":"188c246847491bece395465e897031c469737824","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        )"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"# NOTE(u_glide): this function is required to exclude ShareManageUnmanageBase"},{"line_number":135,"context_line":"# from executed test cases."},{"line_number":136,"context_line":"# See: https://docs.python.org/2/library/unittest.html#load-tests-protocol"},{"line_number":137,"context_line":"# for details."}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_5a5f840e","line":134,"range":{"start_line":134,"start_character":54,"end_line":134,"end_character":77},"updated":"2019-04-08 19:38:34.000000000","message":"ShareExtendBase","commit_id":"4bb4fea27e849109438a86e539d9209ddf029266"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dd0a59acef04632b4193ea198c1286d0abc61dfa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Tatyana Inc. :)"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":24,"id":"5fc1f717_a08c1b80","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":32},"updated":"2019-04-08 19:56:35.000000000","message":"Isn\u0027t appropriate, let\u0027s please remove it.","commit_id":"844fc0129834d1b05c89830c24271bcaa908090b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dd0a59acef04632b4193ea198c1286d0abc61dfa","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        LOG.debug(\u0027Step 5 - mount\u0027)"},{"line_number":70,"context_line":"        self.mount_share(locations[0], remote_client)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        blocks \u003d (1024 * default_share_size) / 64"},{"line_number":73,"context_line":"        LOG.debug(\u0027Step 6 - writing {} * 64MB blocks\u0027.format(blocks))"},{"line_number":74,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":75,"context_line":"                                                  \u0027/mnt/t1\u0027, \u002764M\u0027,"},{"line_number":76,"context_line":"                                                  blocks, \u0027/dev/urandom\u0027)"},{"line_number":77,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":78,"context_line":"        LOG.debug(ls_result)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5fc1f717_80647fba","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":73},"updated":"2019-04-08 19:56:35.000000000","message":"On most shared file systems, you cannot write the full amount because of reservations for file system metadata. I suggest we try to write 90% of the share size.\n\nThe failures in the jobs suggest this too. See the LVM job here:\n\nhttp://logs.openstack.org/68/531568/24/check/manila-tempest-minimal-dsvm-lvm/495fa78/logs/testr_results.html.gz\n\n\nSo, instead of assuming absolute numbers, let\u0027s work with percentages of the default share size...","commit_id":"844fc0129834d1b05c89830c24271bcaa908090b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dd0a59acef04632b4193ea198c1286d0abc61dfa","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertRaises("},{"line_number":82,"context_line":"            exceptions.SSHExecCommandFailed,"},{"line_number":83,"context_line":"            self.write_data_to_mounted_share_using_dd,"},{"line_number":84,"context_line":"            remote_client, \u0027/mnt/t2\u0027, \u002764M\u0027, 2, \u0027/dev/urandom\u0027)"},{"line_number":85,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":86,"context_line":"        LOG.debug(ls_result)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5fc1f717_00cc0f87","line":84,"range":{"start_line":84,"start_character":38,"end_line":84,"end_character":46},"updated":"2019-04-08 19:56:35.000000000","message":"If you change the above to fill up 90% of the share, attempt to write 20% more.. this should fail.. \n\nThen extend the share by 25% of the original share perhaps, and re-attempt to fill up 20% of the original share size... this should pass.","commit_id":"844fc0129834d1b05c89830c24271bcaa908090b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"dd0a59acef04632b4193ea198c1286d0abc61dfa","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        share \u003d self.shares_v2_client.get_share(share[\"id\"])"},{"line_number":95,"context_line":"        self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        LOG.debug(\u0027Step 8 - writing {} * 64MB blocks\u0027.format(blocks))"},{"line_number":98,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":99,"context_line":"                                                  \u0027/mnt/t1\u0027, \u002764M\u0027,"},{"line_number":100,"context_line":"                                                  blocks, \u0027/dev/urandom\u0027)"},{"line_number":101,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":102,"context_line":"        LOG.debug(ls_result)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        LOG.debug(\u0027Step 8b - writing more data, should succeed\u0027)"},{"line_number":105,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"}],"source_content_type":"text/x-python","patch_set":24,"id":"5fc1f717_603633b7","line":102,"range":{"start_line":97,"start_character":0,"end_line":102,"end_character":28},"updated":"2019-04-08 19:56:35.000000000","message":"Why rewrite t1? T1 should exist, and be unchanged..","commit_id":"844fc0129834d1b05c89830c24271bcaa908090b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"188c246847491bece395465e897031c469737824","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        )"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"# NOTE(u_glide): this function is required to exclude ShareManageUnmanageBase"},{"line_number":137,"context_line":"# from executed test cases."},{"line_number":138,"context_line":"# See: https://docs.python.org/2/library/unittest.html#load-tests-protocol"},{"line_number":139,"context_line":"# for details."}],"source_content_type":"text/x-python","patch_set":24,"id":"5fc1f717_a0b3bb4d","line":136,"range":{"start_line":136,"start_character":54,"end_line":136,"end_character":77},"updated":"2019-04-08 19:38:34.000000000","message":"ShareExtendBase","commit_id":"844fc0129834d1b05c89830c24271bcaa908090b"},{"author":{"_account_id":26968,"name":"Amit O","email":"oamit.work@gmail.com","username":"amito"},"change_message_id":"d86636031e65871fc3b6de3215e16cf12c5114a7","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        LOG.debug(\u0027Step 5 - mount\u0027)"},{"line_number":67,"context_line":"        self.mount_share(locations[0], remote_client)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        total_blocks \u003d (1024 * default_share_size) / 64"},{"line_number":70,"context_line":"        three_quarter_blocks \u003d (total_blocks / 4) * 3"},{"line_number":71,"context_line":"        LOG.debug(\u0027Step 6 - writing {} * 64MB blocks\u0027"},{"line_number":72,"context_line":"                  .format(three_quarter_blocks))"}],"source_content_type":"text/x-python","patch_set":25,"id":"ffb9cba7_1c649749","line":69,"range":{"start_line":69,"start_character":24,"end_line":69,"end_character":28},"updated":"2019-04-29 06:54:41.000000000","message":"oslo_utils.units.Ki","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":26535,"name":"Nir Gilboa","email":"gilboa.nir@gmail.com","username":"nirgilbo"},"change_message_id":"ca24cbdaf4a499758c5060fadc6895d7d1a02f49","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        LOG.debug(\u0027Step 5 - mount\u0027)"},{"line_number":67,"context_line":"        self.mount_share(locations[0], remote_client)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        total_blocks \u003d (1024 * default_share_size) / 64"},{"line_number":70,"context_line":"        three_quarter_blocks \u003d (total_blocks / 4) * 3"},{"line_number":71,"context_line":"        LOG.debug(\u0027Step 6 - writing {} * 64MB blocks\u0027"},{"line_number":72,"context_line":"                  .format(three_quarter_blocks))"}],"source_content_type":"text/x-python","patch_set":25,"id":"dfbec78f_5336e205","line":69,"range":{"start_line":69,"start_character":24,"end_line":69,"end_character":28},"in_reply_to":"ffb9cba7_1c649749","updated":"2019-05-06 14:20:27.000000000","message":"Done","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ff9cce8aa00a720509104922dc1f27585cd5776e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":78,"context_line":"        LOG.debug(ls_result)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        one_quarter_blocks \u003d total_blocks - three_quarter_blocks"},{"line_number":81,"context_line":"        LOG.debug(\u0027Step 6b - Write more data, should fail\u0027)"},{"line_number":82,"context_line":"        self.assertRaises("},{"line_number":83,"context_line":"            exceptions.SSHExecCommandFailed,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ffb9cba7_f5f2719a","line":80,"range":{"start_line":80,"start_character":0,"end_line":80,"end_character":64},"updated":"2019-04-22 17:29:50.000000000","message":"Nice!\n\nIn my previous comment, I noted that most backend shared file systems cannot be written into completely, however, there may be some file systems that will allow one to write completely... Can you add a few more blocks to this to ensure we will fail lines 82-85 as expected, even on those file systems?\n\nYou can name the variable \"over_one_quarter_blocks\" or whatever you deem fit :)","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":26535,"name":"Nir Gilboa","email":"gilboa.nir@gmail.com","username":"nirgilbo"},"change_message_id":"ca24cbdaf4a499758c5060fadc6895d7d1a02f49","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":78,"context_line":"        LOG.debug(ls_result)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        one_quarter_blocks \u003d total_blocks - three_quarter_blocks"},{"line_number":81,"context_line":"        LOG.debug(\u0027Step 6b - Write more data, should fail\u0027)"},{"line_number":82,"context_line":"        self.assertRaises("},{"line_number":83,"context_line":"            exceptions.SSHExecCommandFailed,"}],"source_content_type":"text/x-python","patch_set":25,"id":"dfbec78f_3331ee0c","line":80,"range":{"start_line":80,"start_character":0,"end_line":80,"end_character":64},"in_reply_to":"ffb9cba7_f5f2719a","updated":"2019-05-06 14:20:27.000000000","message":"Done","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ff9cce8aa00a720509104922dc1f27585cd5776e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.debug(\u0027Step 8 - writing more data, should succeed\u0027)"},{"line_number":100,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":101,"context_line":"                                                  \u0027/mnt/t3\u0027, \u002764M\u0027,"},{"line_number":102,"context_line":"                                                  one_quarter_blocks,"},{"line_number":103,"context_line":"                                                  \u0027/dev/urandom\u0027)"},{"line_number":104,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":105,"context_line":"        LOG.debug(ls_result)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ffb9cba7_35d009f8","line":103,"range":{"start_line":100,"start_character":0,"end_line":103,"end_character":65},"updated":"2019-04-22 17:29:50.000000000","message":"Interesting, this is failing with the following error:\n\n Traceback (most recent call last):\n  File \"/opt/stack/new/manila-tempest-plugin/manila_tempest_tests/tests/scenario/test_share_extend.py\", line 103, in test_create_extend_and_write\n    \u0027/dev/urandom\u0027)\n  File \"/opt/stack/new/manila-tempest-plugin/manila_tempest_tests/tests/scenario/manager_share.py\", line 207, in write_data_to_mounted_share_using_dd\n    .format(block_size, block_count, input_file, output_file))\n  File \"tempest/lib/common/ssh.py\", line 202, in exec_command\n    stderr\u003derr_data, stdout\u003dout_data)\ntempest.lib.exceptions.SSHExecCommandFailed: Command \u0027sudo sh -c \"dd bs\u003d64M count\u003d4 if\u003d/dev/urandom of\u003d/mnt/t3 conv\u003dfsync iflag\u003dfullblock\"\u0027, exit status: 1, stderr:\ndd: failed to open \u0027/mnt/t3\u0027: Stale file handle\n\nstdout:\n\nhttp://logs.openstack.org/68/531568/25/check/manila-tempest-dsvm-scenario/a6ab854/logs/testr_results.html.gz\n\n\nI wonder if it\u0027s because the filesystem has been re-exported on the backend. I think re-exporting a file system should be transparent to clients. So, this failure here seems like a bug in the generic driver. We might need other reviewers to confirm.","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e2c4f772b7e69d0226ddd9de2f34ab3bc1588ebc","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.debug(\u0027Step 8 - writing more data, should succeed\u0027)"},{"line_number":100,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":101,"context_line":"                                                  \u0027/mnt/t3\u0027, \u002764M\u0027,"},{"line_number":102,"context_line":"                                                  one_quarter_blocks,"},{"line_number":103,"context_line":"                                                  \u0027/dev/urandom\u0027)"},{"line_number":104,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":105,"context_line":"        LOG.debug(ls_result)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"dfbec78f_9d876e10","line":103,"range":{"start_line":100,"start_character":0,"end_line":103,"end_character":65},"in_reply_to":"dfbec78f_d35c124d","updated":"2019-05-07 20:29:02.000000000","message":"I chatted with some folks about this at the OpenStack PTG last week. What\u0027s happening here could be unique to the generic driver - currently, the driver doesn\u0027t do an \"online extend\" - it un-mounts (or detaches) the cinder disk and reattaches it, which causes our VM/client to disconnect and result in a \"Stale file handle\" error. \n\nWe can approach this in two ways:\n\n \n\n1) Remount the file system on the VM/client if we get this error and try writing the file again\n2) Fix the generic driver to support online-extend\n\n \n\nOnline extend is a new nova/cinder feature (Cinder API version 3.42). Fixing the generic driver would be a good long term solution, however, since the tests can be run against any existing manila installation, the tests must not expect that we have support for this relatively new feature.","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":26535,"name":"Nir Gilboa","email":"gilboa.nir@gmail.com","username":"nirgilbo"},"change_message_id":"ca24cbdaf4a499758c5060fadc6895d7d1a02f49","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self.assertEqual(extended_share_size, int(share[\"size\"]))"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.debug(\u0027Step 8 - writing more data, should succeed\u0027)"},{"line_number":100,"context_line":"        self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":101,"context_line":"                                                  \u0027/mnt/t3\u0027, \u002764M\u0027,"},{"line_number":102,"context_line":"                                                  one_quarter_blocks,"},{"line_number":103,"context_line":"                                                  \u0027/dev/urandom\u0027)"},{"line_number":104,"context_line":"        ls_result \u003d remote_client.exec_command(\"sudo ls -lAh /mnt/\")"},{"line_number":105,"context_line":"        LOG.debug(ls_result)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"dfbec78f_d35c124d","line":103,"range":{"start_line":100,"start_character":0,"end_line":103,"end_character":65},"in_reply_to":"ffb9cba7_35d009f8","updated":"2019-05-06 14:20:27.000000000","message":"ok - what should I do in order to get more input?","commit_id":"813e6ba87bc5305e6a1087c4d3d3af3fac909859"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccab2d28e93b5d2ac94ef2af03c8c956e33f8a80","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                                      block_count,"},{"line_number":131,"context_line":"                                                      \u0027/dev/urandom\u0027)"},{"line_number":132,"context_line":"        except exceptions.SSHExecCommandFailed as e:"},{"line_number":133,"context_line":"            if (\u0027Stale file handle\u0027) in six.text_type(e):"},{"line_number":134,"context_line":"                self.mount_share(mount_location, remote_client)"},{"line_number":135,"context_line":"                self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":136,"context_line":"                                                          output_file,"}],"source_content_type":"text/x-python","patch_set":28,"id":"bfb3d3c7_4124e3c6","line":133,"range":{"start_line":133,"start_character":55,"end_line":133,"end_character":57},"updated":"2019-05-18 00:43:39.000000000","message":"Let\u0027s log a warning here with a message to the test runner that the client was disconnected during the extend process","commit_id":"c86f7ffdebdb27ac680cb71c2bf9d27318fada30"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccab2d28e93b5d2ac94ef2af03c8c956e33f8a80","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                                      block_count,"},{"line_number":131,"context_line":"                                                      \u0027/dev/urandom\u0027)"},{"line_number":132,"context_line":"        except exceptions.SSHExecCommandFailed as e:"},{"line_number":133,"context_line":"            if (\u0027Stale file handle\u0027) in six.text_type(e):"},{"line_number":134,"context_line":"                self.mount_share(mount_location, remote_client)"},{"line_number":135,"context_line":"                self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":136,"context_line":"                                                          output_file,"}],"source_content_type":"text/x-python","patch_set":28,"id":"bfb3d3c7_8145fb72","line":133,"range":{"start_line":133,"start_character":17,"end_line":133,"end_character":18},"updated":"2019-05-18 00:43:39.000000000","message":"s","commit_id":"c86f7ffdebdb27ac680cb71c2bf9d27318fada30"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccab2d28e93b5d2ac94ef2af03c8c956e33f8a80","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                                      block_count,"},{"line_number":131,"context_line":"                                                      \u0027/dev/urandom\u0027)"},{"line_number":132,"context_line":"        except exceptions.SSHExecCommandFailed as e:"},{"line_number":133,"context_line":"            if (\u0027Stale file handle\u0027) in six.text_type(e):"},{"line_number":134,"context_line":"                self.mount_share(mount_location, remote_client)"},{"line_number":135,"context_line":"                self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":136,"context_line":"                                                          output_file,"}],"source_content_type":"text/x-python","patch_set":28,"id":"bfb3d3c7_415f0341","line":133,"range":{"start_line":133,"start_character":40,"end_line":133,"end_character":56},"updated":"2019-05-18 00:43:39.000000000","message":"six.text_type(e).lower()","commit_id":"c86f7ffdebdb27ac680cb71c2bf9d27318fada30"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccab2d28e93b5d2ac94ef2af03c8c956e33f8a80","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                                                      \u0027/dev/urandom\u0027)"},{"line_number":132,"context_line":"        except exceptions.SSHExecCommandFailed as e:"},{"line_number":133,"context_line":"            if (\u0027Stale file handle\u0027) in six.text_type(e):"},{"line_number":134,"context_line":"                self.mount_share(mount_location, remote_client)"},{"line_number":135,"context_line":"                self.write_data_to_mounted_share_using_dd(remote_client,"},{"line_number":136,"context_line":"                                                          output_file,"},{"line_number":137,"context_line":"                                                          block_size,"}],"source_content_type":"text/x-python","patch_set":28,"id":"bfb3d3c7_e1507735","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":63},"updated":"2019-05-18 00:43:39.000000000","message":"You\u0027ll need to force unmount and then mount again.","commit_id":"c86f7ffdebdb27ac680cb71c2bf9d27318fada30"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ccab2d28e93b5d2ac94ef2af03c8c956e33f8a80","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                                                          block_size,"},{"line_number":138,"context_line":"                                                          block_count,"},{"line_number":139,"context_line":"                                                          \u0027/dev/urandom\u0027)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"class TestShareExtendNFS(ShareExtendBase):"},{"line_number":143,"context_line":"    protocol \u003d \"nfs\""}],"source_content_type":"text/x-python","patch_set":28,"id":"bfb3d3c7_012eeba4","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":0},"updated":"2019-05-18 00:43:39.000000000","message":"else, re-raise exception...","commit_id":"c86f7ffdebdb27ac680cb71c2bf9d27318fada30"}]}
