)]}'
{"tempest/api/compute/volumes/test_attach_volume.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"4b36c51e695446ddbf693881896dda9b003aa832","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        is_connected \u003d True"},{"line_number":64,"context_line":"        command \u003d \u0027sudo blockdev --rereadpt /dev/%s\u0027 % self.device"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            linux_client.exec_command(command)"},{"line_number":67,"context_line":"        except Exception as exc:"},{"line_number":68,"context_line":"            is_connected \u003d False"},{"line_number":69,"context_line":"            LOG.debug(\u0027Connection check failed for device /dev/%s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_f1d03153","line":66,"range":{"start_line":66,"start_character":12,"end_line":66,"end_character":24},"updated":"2018-03-09 05:25:28.000000000","message":"If linux_client is None(i.e., run_validation\u003dFalse), self.assertTrue(self._is_volume_connected(client1)) will fail unexpectedly","commit_id":"3e48ee1688161e25aa7d555e64610c672f1a705d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d404ddf96bb360daf40ccad248d9d8a0356dafe7","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        linux_client \u003d None"},{"line_number":89,"context_line":"        if CONF.validation.run_validation:"},{"line_number":90,"context_line":"            linux_client \u003d remote_client.RemoteClient("},{"line_number":91,"context_line":"                self.get_server_ip(server, validation_resources),"},{"line_number":92,"context_line":"                self.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_31cc6934","line":89,"range":{"start_line":89,"start_character":8,"end_line":89,"end_character":42},"updated":"2018-03-09 06:32:37.000000000","message":"This will get RemoteClient even if not needed(e.g., server1, _ \u003d self._create_server()), better to avoid this:)","commit_id":"3e48ee1688161e25aa7d555e64610c672f1a705d"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f8eba413804fee1b10fd0abdbc9d9410ed936dcc","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        Return True if connected, False if not."},{"line_number":62,"context_line":"        \u0027\u0027\u0027"},{"line_number":63,"context_line":"        is_connected \u003d True"},{"line_number":64,"context_line":"        command \u003d \u0027sudo blockdev --rereadpt /dev/%s\u0027 % self.device"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            linux_client.exec_command(command)"},{"line_number":67,"context_line":"        except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_23d01ff7","line":64,"updated":"2018-06-12 06:50:09.000000000","message":"+1\nWhy don\u0027t we take that way?","commit_id":"5b5286eafb9f405dfdc749d8bfc6a777ac43d9b4"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b9372e5bc95679668a0ede10c9f1dbceb077dc6f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        Return True if connected, False if not."},{"line_number":62,"context_line":"        \u0027\u0027\u0027"},{"line_number":63,"context_line":"        is_connected \u003d True"},{"line_number":64,"context_line":"        command \u003d \u0027sudo blockdev --rereadpt /dev/%s\u0027 % self.device"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            linux_client.exec_command(command)"},{"line_number":67,"context_line":"        except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_38586188","line":64,"updated":"2018-05-29 09:20:32.000000000","message":"It not just reads it might try to interpret it, what grantees we do not have random content there at this time ? Isn\u0027t this command might fail in case it finds something meaningless for ex. partition outside geometry.\n\n dd if\u003d/dev/\u003cmydev\u003e of\u003d/tmp/test bs\u003d4k count\u003d1 # also reads , the /tmp/file size is check-able.","commit_id":"5b5286eafb9f405dfdc749d8bfc6a777ac43d9b4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3826597af0f382dcb91d124639ded7abbdf09c69","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        Return True if connected, False if not."},{"line_number":62,"context_line":"        \u0027\u0027\u0027"},{"line_number":63,"context_line":"        is_connected \u003d True"},{"line_number":64,"context_line":"        command \u003d \u0027sudo blockdev --rereadpt /dev/%s\u0027 % self.device"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            linux_client.exec_command(command)"},{"line_number":67,"context_line":"        except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_c51a667b","line":64,"in_reply_to":"5f7c97a3_23d01ff7","updated":"2018-06-13 15:46:56.000000000","message":"Checking that it can be read on both sides doesn\u0027t really tell us that it\u0027s the same volume, or that writes got flushed and are visible to the other side, etc.\n\nI would assume we should write something to the device and verify that it is sane on the other end. We could do that with mount, if mkfs is on the cirros image, but it would be trivial to just do this with dd:\n\n echo \"foo\" | dd of\u003d/dev/sdX bs\u003d1\n\n..\n\n dd if\u003d/dev/sdX count\u003d3 bs\u003d1","commit_id":"5b5286eafb9f405dfdc749d8bfc6a777ac43d9b4"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"1ac3487ab7383e15855691c96baa5d7c00078417","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                                       \u0027ACTIVE\u0027)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if linux_client:"},{"line_number":123,"context_line":"            disks \u003d linux_client.get_disks()"},{"line_number":124,"context_line":"            device_name_to_match \u003d \u0027\\n\u0027 + self.device + \u0027 \u0027"},{"line_number":125,"context_line":"            self.assertIn(device_name_to_match, disks)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        self.servers_client.detach_volume(server[\u0027id\u0027], attachment[\u0027volumeId\u0027])"},{"line_number":128,"context_line":"        waiters.wait_for_volume_resource_status("}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_0c8483d3","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":54},"updated":"2018-03-12 01:55:05.000000000","message":"This is the previous way of checking whether volume is connected or not, and I wonder why you don\u0027t use this way in your testcase?\nMaybe to read disks of a server is more safe than to read the partition table?","commit_id":"5b5286eafb9f405dfdc749d8bfc6a777ac43d9b4"},{"author":{"_account_id":17386,"name":"Steve Noyes","email":"steve.noyes@oracle.com","username":"ssn1ssn"},"change_message_id":"9a476b8028cca9f361b6519f0adfb1eeb4bdf450","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                                       \u0027ACTIVE\u0027)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if linux_client:"},{"line_number":123,"context_line":"            disks \u003d linux_client.get_disks()"},{"line_number":124,"context_line":"            device_name_to_match \u003d \u0027\\n\u0027 + self.device + \u0027 \u0027"},{"line_number":125,"context_line":"            self.assertIn(device_name_to_match, disks)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        self.servers_client.detach_volume(server[\u0027id\u0027], attachment[\u0027volumeId\u0027])"},{"line_number":128,"context_line":"        waiters.wait_for_volume_resource_status("}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_c923d804","line":125,"range":{"start_line":123,"start_character":0,"end_line":125,"end_character":54},"in_reply_to":"df7087c5_0c8483d3","updated":"2018-03-12 08:31:14.000000000","message":"This check works OK when you attach a disk for the first time. It verifies that the newly attached disk has been seen by the vm (eg VM1). \n\nThe problem with this check, particularly for multi-attach, is that if you detach a multi-attached disk from a different vm (eg VM2), you need to check that the disk is still actually connected to VM1. \n\nIf you mistakenly drop the volume connection (a bug) on the host from VM1, VM1 will still think it\u0027s connected and get_disks() will return the disk as if it were attached (Related-Bug: 1752115). You have to force VM1 to try to access the disk to see this particular failure scenario. \n\nIn general, this is a better check than get_disks() as it checks not only that the disk is seen by the VM, but that it is also read-able.","commit_id":"5b5286eafb9f405dfdc749d8bfc6a777ac43d9b4"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f8eba413804fee1b10fd0abdbc9d9410ed936dcc","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def _create_volume_and_attach(self, servers):"},{"line_number":331,"context_line":"        \"\"\"Creates a volume and attaches it to the provided servers."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        :returns: A two-item tuple of the created volume, and dict of"},{"line_number":334,"context_line":"                  server ID to volumeAttachment dict entries"},{"line_number":335,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_43cd1b5b","line":332,"updated":"2018-06-12 06:50:09.000000000","message":"nit: It might be good to add the \u0027servers\u0027 parameter docstring which you added here.","commit_id":"5b5286eafb9f405dfdc749d8bfc6a777ac43d9b4"}]}
