)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13420,"name":"Serhii Vasheka","email":"svasheka@mirantis.com","username":"svasheka"},"change_message_id":"ce717336b0ca4e9afb6c9e9618cd52dd70d80034","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alexander Gubanov \u003cogubanov@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-14 17:10:46 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add new tempest test \"RebuidInstanceWithVolume\""},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This test is for verifying functionality of rebuild instance with volume."},{"line_number":10,"context_line":"The following is the scenario outline:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_3e2ba884","line":7,"updated":"2015-05-14 14:23:02.000000000","message":"typo in word Rebuild","commit_id":"b674b35369cedf3506977d6bbbf5d3d8a62db242"},{"author":{"_account_id":13420,"name":"Serhii Vasheka","email":"svasheka@mirantis.com","username":"svasheka"},"change_message_id":"ce717336b0ca4e9afb6c9e9618cd52dd70d80034","unresolved":false,"context_lines":[{"line_number":15,"context_line":"5. Create a filesystem on volume"},{"line_number":16,"context_line":"6. Mount volume"},{"line_number":17,"context_line":"7. Create a file which timestamp is written on volume"},{"line_number":18,"context_line":"8. Rebuild instance instance"},{"line_number":19,"context_line":"9. SSH to instance"},{"line_number":20,"context_line":"10. Mount volume"},{"line_number":21,"context_line":"11. Check the existence of a file which created at 7. on volume"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_de3a54cd","line":18,"updated":"2015-05-14 14:23:02.000000000","message":"same as in test itself \n8. Rebuild instance","commit_id":"b674b35369cedf3506977d6bbbf5d3d8a62db242"}],"tempest/scenario/test_rebuild_instance_with_volume.py":[{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"7b4f18d08cc3393a3407dd5e26cfa324c9f746ee","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestRebuidInstanceWithVolume(manager.ScenarioTest):"},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    This test is for verifying functionality of rebuild instance with volume."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    The following is the scenario outline:"},{"line_number":34,"context_line":"    1. Boot an instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a0c5dc1_77a6dcc2","line":31,"updated":"2015-05-12 17:23:13.000000000","message":"Let\u0027s start doc string from the first line of multiline string.\n\nMore details:\nhttp://docs.openstack.org/developer/hacking/#docstrings","commit_id":"c6fc62ca1001345b89de07a3f75a414d55bf6c3b"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    8. Rebuild instance instance"},{"line_number":41,"context_line":"    9. SSH to instance"},{"line_number":42,"context_line":"    10. Mount volume"},{"line_number":43,"context_line":"    11. Check the existence of a file which created at 7. on volume"},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _create_server(self, image, create_kwargs\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_3d2615bb","line":43,"updated":"2015-05-14 12:01:59.000000000","message":"nit: please add an empty line here","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    11. Check the existence of a file which created at 7. on volume"},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _create_server(self, image, create_kwargs\u003dNone):"},{"line_number":47,"context_line":"        return self.create_server(image\u003dimage, create_kwargs\u003dcreate_kwargs)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _rebuild_server(self, server, image, rebuild_kwargs\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_da3f07d5","line":46,"updated":"2015-05-14 12:01:59.000000000","message":"nit: if it\u0027s a oneliner and only called once, do we really need this helper at all? why not just call self.create_server() in the test?","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def _create_server(self, image, create_kwargs\u003dNone):"},{"line_number":47,"context_line":"        return self.create_server(image\u003dimage, create_kwargs\u003dcreate_kwargs)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _rebuild_server(self, server, image, rebuild_kwargs\u003dNone):"},{"line_number":50,"context_line":"        return self.rebuild_server(server_id\u003dserver, image\u003dimage,"},{"line_number":51,"context_line":"                                   rebuild_kwargs\u003drebuild_kwargs)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_5a2c37ab","line":49,"updated":"2015-05-14 12:01:59.000000000","message":"ditto","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.servers_client.stop(server[\u0027id\u0027])"},{"line_number":55,"context_line":"        self.servers_client.wait_for_server_status(server[\u0027id\u0027], \u0027SHUTOFF\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _add_keypair(self):"},{"line_number":58,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _ssh_to_server(self, server_or_ip):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_5a031710","line":57,"updated":"2015-05-14 12:01:59.000000000","message":"ditto","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def _add_keypair(self):"},{"line_number":58,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _ssh_to_server(self, server_or_ip):"},{"line_number":61,"context_line":"        return self.get_remote_client(server_or_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _wait_for_volume_status(self, volume, status):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_9d106950","line":60,"updated":"2015-05-14 12:01:59.000000000","message":"ditto","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def _ssh_to_server(self, server_or_ip):"},{"line_number":61,"context_line":"        return self.get_remote_client(server_or_ip)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _wait_for_volume_status(self, volume, status):"},{"line_number":64,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], status)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _create_volume(self, snapshot_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_bd13255c","line":63,"updated":"2015-05-14 12:01:59.000000000","message":"ditto","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def _wait_for_volume_status(self, volume, status):"},{"line_number":64,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], status)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _create_volume(self, snapshot_id\u003dNone):"},{"line_number":67,"context_line":"        return self.create_volume()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _attach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_fd087d2a","line":66,"updated":"2015-05-14 12:01:59.000000000","message":"ditto","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        ssh_client \u003d self._ssh_to_server(server_or_ip)"},{"line_number":94,"context_line":"        ssh_client.exec_command(\u0027sudo /usr/sbin/mkfs.ext4 /dev/vdb\u0027)"},{"line_number":95,"context_line":"        ssh_client.exec_command(\u0027sudo mount /dev/vdb /mnt\u0027)"},{"line_number":96,"context_line":"        ssh_client.exec_command(\u0027sudo sh -c \"date \u003e /mnt/timestamp; sync\"\u0027)"},{"line_number":97,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027sudo cat /mnt/timestamp\u0027)"},{"line_number":98,"context_line":"        ssh_client.exec_command(\u0027sudo umount /mnt\u0027)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_bab0cb8c","line":96,"updated":"2015-05-14 12:01:59.000000000","message":"can we remove sync from here to make sure rebuild actually does a graceful shutdown of a VM before detaching volumes?","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"02004a3181077d45ff00abed1a8d5f47978cd6e3","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        # check the existence of the timestamp file in the volume"},{"line_number":142,"context_line":"        self._check_timestamp(server_ip)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        # detach volume and shutdown an instance"},{"line_number":145,"context_line":"        self._detach_volume(volume)"},{"line_number":146,"context_line":"        self._shutdown_server(server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_3d829553","line":144,"updated":"2015-05-14 12:01:59.000000000","message":"we should probably just delete a server here","commit_id":"4f3299bce320f6c0c0095bef2beae4b32064b4b1"},{"author":{"_account_id":13420,"name":"Serhii Vasheka","email":"svasheka@mirantis.com","username":"svasheka"},"change_message_id":"a2dc3f6585a502dd01f3c2107eef1244bd777561","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    5. Create a filesystem on volume"},{"line_number":38,"context_line":"    6. Mount volume"},{"line_number":39,"context_line":"    7. Create a file which timestamp is written on volume"},{"line_number":40,"context_line":"    8. Rebuild instance instance"},{"line_number":41,"context_line":"    9. SSH to instance"},{"line_number":42,"context_line":"    10. Mount volume"},{"line_number":43,"context_line":"    11. Check the existence of a file which created at 7. on volume"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_5ba1d6a8","line":40,"updated":"2015-05-14 14:16:23.000000000","message":"8. Rebuild instance","commit_id":"b674b35369cedf3506977d6bbbf5d3d8a62db242"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"16bf40612532a5ba1c2b2c9a1b5ed0241c101a59","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _create_timestamp(self, server_or_ip):"},{"line_number":73,"context_line":"        ssh_client \u003d self.get_remote_client(server_or_ip)"},{"line_number":74,"context_line":"        ssh_client.exec_command(\u0027sudo /usr/sbin/mkfs.ext4 /dev/vdb\u0027)"},{"line_number":75,"context_line":"        ssh_client.exec_command(\u0027sudo mount /dev/vdb /mnt\u0027)"},{"line_number":76,"context_line":"        ssh_client.exec_command(\u0027sudo sh -c \"date \u003e /mnt/timestamp\"\u0027)"},{"line_number":77,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027sudo cat /mnt/timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ee1dd362","line":74,"updated":"2015-05-20 12:48:05.000000000","message":"nit: for the sake of consistency we could use just a binary name here not specifying the full file path","commit_id":"2981d9f388094c97d1a448e62497e9c4f0191f66"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"e4209871ecf4c138866f56c3679b877bfcdbc113","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _create_timestamp(self, server_or_ip):"},{"line_number":73,"context_line":"        ssh_client \u003d self.get_remote_client(server_or_ip)"},{"line_number":74,"context_line":"        ssh_client.exec_command(\u0027sudo /usr/sbin/mkfs.ext4 /dev/vdb\u0027)"},{"line_number":75,"context_line":"        ssh_client.exec_command(\u0027sudo mount /dev/vdb /mnt\u0027)"},{"line_number":76,"context_line":"        ssh_client.exec_command(\u0027sudo sh -c \"date \u003e /mnt/timestamp\"\u0027)"},{"line_number":77,"context_line":"        self.timestamp \u003d ssh_client.exec_command(\u0027sudo cat /mnt/timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_496741b7","line":74,"in_reply_to":"7a016987_ee1dd362","updated":"2015-05-20 13:29:00.000000000","message":"In this case we should use full path for mkfs because in case of relative path we will get an error:\ntempest_lib.exceptions.SSHExecCommandFailed: Command \u0027sudo mkfs.ext4 /dev/vdb\u0027, exit status: 1, Error:\nsudo: mkfs.ext4: command not found","commit_id":"2981d9f388094c97d1a448e62497e9c4f0191f66"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"16bf40612532a5ba1c2b2c9a1b5ed0241c101a59","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self._create_timestamp(server_ip)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # rebuild instance"},{"line_number":118,"context_line":"        self.rebuild_server(server[\u0027id\u0027], image\u003dCONF.compute.image_ref,"},{"line_number":119,"context_line":"                            rebuild_kwargs\u003dcreate_kwargs)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # check the existence of the timestamp file in the volume"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_aeb11b49","line":118,"updated":"2015-05-20 12:48:05.000000000","message":"is there an alternative image? so that rebuild actually uses a different one","commit_id":"2981d9f388094c97d1a448e62497e9c4f0191f66"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"e4209871ecf4c138866f56c3679b877bfcdbc113","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self._create_timestamp(server_ip)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # rebuild instance"},{"line_number":118,"context_line":"        self.rebuild_server(server[\u0027id\u0027], image\u003dCONF.compute.image_ref,"},{"line_number":119,"context_line":"                            rebuild_kwargs\u003dcreate_kwargs)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # check the existence of the timestamp file in the volume"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_090ca9eb","line":118,"in_reply_to":"7a016987_aeb11b49","updated":"2015-05-20 13:29:00.000000000","message":"you\u0027re right, I will fix it","commit_id":"2981d9f388094c97d1a448e62497e9c4f0191f66"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"b3726ada3b20fc887896be5a19ea39cb005b474d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _attach_volume(self, server, volume):"},{"line_number":49,"context_line":"        attached_volume \u003d self.servers_client.attach_volume("},{"line_number":50,"context_line":"            server[\u0027id\u0027], volume[\u0027id\u0027], device\u003d\u0027/dev/vdb\u0027)"},{"line_number":51,"context_line":"        self.assertEqual(volume[\u0027id\u0027], attached_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_08a36e01","line":48,"updated":"2015-05-21 10:24:47.000000000","message":"Hi , \nthe device name should not be hardcoded , it should be taken from config.py\n\nBenny","commit_id":"2248f8f677537b6ff1ad24d42df72d1ded448f33"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"b1d492358a9e14890aa097dbe5966b64aec7bec8","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _attach_volume(self, server, volume):"},{"line_number":49,"context_line":"        attached_volume \u003d self.servers_client.attach_volume("},{"line_number":50,"context_line":"            server[\u0027id\u0027], volume[\u0027id\u0027], device\u003d\u0027/dev/vdb\u0027)"},{"line_number":51,"context_line":"        self.assertEqual(volume[\u0027id\u0027], attached_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_489726ec","line":48,"in_reply_to":"7a016987_08a36e01","updated":"2015-05-21 10:55:48.000000000","message":"I thought about this, but found that the device name hardcoded on \"attach_volume\" method here https://github.com/openstack/tempest/blob/master/tempest/services/compute/json/servers_client.py#L360","commit_id":"2248f8f677537b6ff1ad24d42df72d1ded448f33"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"b3726ada3b20fc887896be5a19ea39cb005b474d","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _check_timestamp(self, server_or_ip):"},{"line_number":81,"context_line":"        ssh_client \u003d self.get_remote_client(server_or_ip)"},{"line_number":82,"context_line":"        ssh_client.exec_command(\u0027sudo mount /dev/vdb /mnt\u0027)"},{"line_number":83,"context_line":"        got_timestamp \u003d ssh_client.exec_command(\u0027sudo cat /mnt/timestamp\u0027)"},{"line_number":84,"context_line":"        ssh_client.exec_command(\u0027sudo umount /mnt\u0027)"},{"line_number":85,"context_line":"        self.assertEqual(self.timestamp, got_timestamp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_a8dc5a73","line":82,"updated":"2015-05-21 10:24:47.000000000","message":"mount should not be hardcoded.\nBenny","commit_id":"2248f8f677537b6ff1ad24d42df72d1ded448f33"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"b3726ada3b20fc887896be5a19ea39cb005b474d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        if CONF.compute.use_floatingip_for_ssh:"},{"line_number":107,"context_line":"            server_ip \u003d self.create_floating_ip(server)[\u0027ip\u0027]"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            server_ip \u003d server"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # create volume and timestamp file on it"},{"line_number":112,"context_line":"        volume \u003d self.create_volume()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_a8f8dac3","line":109,"updated":"2015-05-21 10:24:47.000000000","message":"Hi , \nPlease try your code with fixed mode and not floating mode .\nI think it will fail.\nSee : https://review.openstack.org/183904","commit_id":"2248f8f677537b6ff1ad24d42df72d1ded448f33"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"56f99e36499232896b0cd18d3d95c9edf6e432e3","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        if CONF.compute.use_floatingip_for_ssh:"},{"line_number":107,"context_line":"            server_ip \u003d self.create_floating_ip(server)[\u0027ip\u0027]"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            server_ip \u003d server"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # create volume and timestamp file on it"},{"line_number":112,"context_line":"        volume \u003d self.create_volume()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_eb9a0c13","line":109,"in_reply_to":"7a016987_a8f8dac3","updated":"2015-05-25 12:04:49.000000000","message":"I\u0027ve checked, it works fine with floating ip mode (+ patch https://review.openstack.org/#/c/176891/ - still on review)\n\ntempest.scenario.test_rebuild_instance_with_volume.TestRebuildInstanceWithVolume\n    test_rebuild_instance_with_volume[compute,id-36c3d492-f5bd-11e4-b9b2-1697f925ec7b,image,network,volume]OK  377.19\n\nok, I will upload new patch.","commit_id":"2248f8f677537b6ff1ad24d42df72d1ded448f33"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"b00abde7eb6135b41ab9b02b19bcd54228d04460","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"},{"line_number":95,"context_line":"    @tempest.test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":96,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # prepare for booting an instance"},{"line_number":99,"context_line":"        self.keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_64a1f0f6","line":96,"updated":"2015-08-03 08:01:35.000000000","message":"This test failed with timeout, need to fix the test and the reason of the timeout.\n\nCould you please execute this test case on your environment with cirros image (which is used for Tempest CI) - as far as I know cirros doesn\u0027t support hot plug devices and you will need to reboot instance to see new device.","commit_id":"830746c87b4aa1817359f28b852ed17bfe65ffaf"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"2a28e80c3beaa15368cb47377aeaccc3870d5b89","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"},{"line_number":95,"context_line":"    @tempest.test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":96,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # prepare for booting an instance"},{"line_number":99,"context_line":"        self.keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_a7885a23","line":96,"in_reply_to":"3a50d1a3_64a1f0f6","updated":"2015-08-03 08:27:24.000000000","message":"Timur, I ran this this on my devstack with cirros image - everything works as expected, as long as you use the latest test patch set and apply Nova patch it depends on.","commit_id":"830746c87b4aa1817359f28b852ed17bfe65ffaf"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"49b8e9c7a6da7c05418df0798a2de3cc7383568c","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"},{"line_number":95,"context_line":"    @tempest.test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":96,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # prepare for booting an instance"},{"line_number":99,"context_line":"        self.keypair \u003d self.create_keypair()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_98bc9b6d","line":96,"in_reply_to":"3a50d1a3_a7885a23","updated":"2015-08-03 10:03:45.000000000","message":"Ok, got it.\nNeed to merge patch in Nova and then start recheck.\n\nThank you!","commit_id":"830746c87b4aa1817359f28b852ed17bfe65ffaf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"06f06f848d3832c611900aeb181aa751d041f742","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # prepare for booting an instance"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":"        self.security_group \u003d self._create_security_group()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_9df27d05","line":47,"updated":"2015-11-23 13:09:49.000000000","message":"Why does this need to be added to self? The create_keypair already adds cleanup, and nothing outside of the test should depend on this key created here.","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"c7b762fe155f3ba34f09a93474bb2b21fc15cf0c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # prepare for booting an instance"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":"        self.security_group \u003d self._create_security_group()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_8391be9c","line":47,"in_reply_to":"ba8a016a_9df27d05","updated":"2015-11-23 13:41:39.000000000","message":"yes you are right, self is not needed. I\u0027ll fix it.","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"06f06f848d3832c611900aeb181aa751d041f742","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # prepare for booting an instance"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":"        self.security_group \u003d self._create_security_group()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"},{"line_number":51,"context_line":"        create_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_bdf501ee","line":48,"updated":"2015-11-23 13:09:49.000000000","message":"Ditto as for keypair","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"c7b762fe155f3ba34f09a93474bb2b21fc15cf0c","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # prepare for booting an instance"},{"line_number":47,"context_line":"        self.keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":"        self.security_group \u003d self._create_security_group()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"},{"line_number":51,"context_line":"        create_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_03ecee27","line":48,"in_reply_to":"ba8a016a_bdf501ee","updated":"2015-11-23 13:41:39.000000000","message":"ok","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"06f06f848d3832c611900aeb181aa751d041f742","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # boot an instance"},{"line_number":57,"context_line":"        server \u003d self.create_server(image\u003dCONF.compute.image_ref,"},{"line_number":58,"context_line":"                                    create_kwargs\u003dcreate_kwargs)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # get instance IP"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_1d6c4d9b","line":57,"range":{"start_line":57,"start_character":22,"end_line":57,"end_character":35},"updated":"2015-11-23 13:09:49.000000000","message":"create_server already uses CONF.compute.image_ref by default. I think we should pass an image here only when it\u0027s not the configured one.","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"c7b762fe155f3ba34f09a93474bb2b21fc15cf0c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        }"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # boot an instance"},{"line_number":57,"context_line":"        server \u003d self.create_server(image\u003dCONF.compute.image_ref,"},{"line_number":58,"context_line":"                                    create_kwargs\u003dcreate_kwargs)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        # get instance IP"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_43e2f630","line":57,"in_reply_to":"ba8a016a_1d6c4d9b","updated":"2015-11-23 13:41:39.000000000","message":"ok, I got it, thanks, I\u0027ll fix it","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"06f06f848d3832c611900aeb181aa751d041f742","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            private_key\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # rebuild instance"},{"line_number":72,"context_line":"        self.rebuild_server(server[\u0027id\u0027], image\u003dCONF.compute.image_ref_alt)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # check the existence of the timestamp file in the volume"},{"line_number":75,"context_line":"        timestamp2 \u003d self.get_timestamp("}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_fddf090a","line":72,"range":{"start_line":72,"start_character":13,"end_line":72,"end_character":27},"updated":"2015-11-23 13:09:49.000000000","message":"Does this test really need the image to be different? If that is the case (which\nI don\u0027t think it is), you need to add a check in skip_checks for the two images to be both configured and different). Else I would just leave here to default, so we do not prevent running this tests in environments which only have one test image.","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"c7b762fe155f3ba34f09a93474bb2b21fc15cf0c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            private_key\u003dself.keypair[\u0027private_key\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # rebuild instance"},{"line_number":72,"context_line":"        self.rebuild_server(server[\u0027id\u0027], image\u003dCONF.compute.image_ref_alt)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # check the existence of the timestamp file in the volume"},{"line_number":75,"context_line":"        timestamp2 \u003d self.get_timestamp("}],"source_content_type":"text/x-python","patch_set":17,"id":"ba8a016a_e303ea74","line":72,"in_reply_to":"ba8a016a_fddf090a","updated":"2015-11-23 13:41:39.000000000","message":"yes, it needs to be different if we want to have NOT artificial/synthetic test.\nUsually rebuild needs for increase VM\u0027s resources.\nI\u0027ll add skip_checks","commit_id":"f1bb7c6a56083922217f0672e5513e1ce76a1517"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"6da3f650014091d1cb60deac431eeea7d2742013","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        # modify default password"},{"line_number":78,"context_line":"        CONF.compute.image_ssh_password \u003d rebuild_kwargs[\u0027adminPass\u0027]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check the existence of the timestamp file in the volume"},{"line_number":81,"context_line":"        timestamp2 \u003d self.get_timestamp("},{"line_number":82,"context_line":"            server_ip,"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a8ffd7b_aabf07fb","line":79,"updated":"2015-12-01 12:54:18.000000000","message":"Hi , You change tempest.conf ssh passwod . is it going to imapact other tests ?\nI dont think its the best way to change conf file values in run time .  i would prefer to use object oriented ways or assigned it in a  variable.\n\nBasically all values from tempest.conf should not be changed.\n\nThanks,\nBenny","commit_id":"b5a16dbf5f961311cb743b552ff7b8dbbf063a9d"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"45244cd0acc2906bc75841af4508d4ff2759dfac","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.rebuild_server(server[\u0027id\u0027], rebuild_kwargs\u003drebuild_kwargs)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        # modify default password"},{"line_number":78,"context_line":"        self.image_ssh_password \u003d rebuild_kwargs[\u0027adminPass\u0027]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # check the existence of the timestamp file in the volume"},{"line_number":81,"context_line":"        timestamp2 \u003d self.get_timestamp("}],"source_content_type":"text/x-python","patch_set":21,"id":"9a8ffd7b_42818d8e","line":78,"updated":"2015-12-01 18:32:26.000000000","message":"This line doesn\u0027t make any effect. What is the purpose of this line?","commit_id":"0d687d586a49ace62a32b541c82d2868e2f290d2"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"46c00262c4814de293eff2d50ca54c8140c49fe6","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestRebuildInstanceWithVolume(manager.ScenarioTest):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a68dd71_1feb8579","line":25,"updated":"2016-01-24 02:18:06.000000000","message":"You don\u0027t use it anywhere.","commit_id":"45d547ab385bc5d2e7138ef019116993cb997e54"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"996ac820ae2d812920ed174bd5cda0aff5948d5d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    5. Rebuild instance"},{"line_number":37,"context_line":"    6. Check the existence of a file which created at 4"},{"line_number":38,"context_line":"    7. Detach volume"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a68dd71_5f9c9d0e","line":39,"updated":"2016-01-24 02:27:26.000000000","message":"Please, remove this blank line.","commit_id":"45d547ab385bc5d2e7138ef019116993cb997e54"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"996ac820ae2d812920ed174bd5cda0aff5948d5d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"},{"line_number":43,"context_line":"    @tempest.test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":44,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # prepare for booting an instance"},{"line_number":47,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":48,"context_line":"        security_group \u003d self._create_security_group()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a68dd71_ff9c710f","line":45,"updated":"2016-01-24 02:27:26.000000000","message":"ditto.","commit_id":"45d547ab385bc5d2e7138ef019116993cb997e54"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"996ac820ae2d812920ed174bd5cda0aff5948d5d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                            private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":72,"context_line":"        cmd_addstamp \u003d \u0027sudo sh -c \"echo \\\u0027#check_rebuild\\\u0027 \u003e\u003e /etc/fstab\"\u0027"},{"line_number":73,"context_line":"        ssh_client.exec_command(cmd_addstamp)"},{"line_number":74,"context_line":"        fstab \u003d ssh_client.exec_command(\u0027cat /etc/fstab\u0027)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # rebuild instance"},{"line_number":77,"context_line":"        self.rebuild_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a68dd71_9fa53548","line":74,"updated":"2016-01-24 02:27:26.000000000","message":"Probably we can merge two commands into one command:\n\n\nfstab \u003d ssh_client.exec_command(\u0027%s \u0026\u0026 cat /etc/fstab\u0027 % cmd_addstamp)","commit_id":"45d547ab385bc5d2e7138ef019116993cb997e54"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c2cef034545e0692f3f1439734a468aed3606b7e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest.scenario import manager"},{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":"import tempest.test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"9a68dd71_2af044c8","line":19,"updated":"2016-01-26 02:29:22.000000000","message":"L19 and L18 are the same imports :)","commit_id":"50c6bb5d02560ebb601af68de3877f5b4e47f71f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestRebuildInstanceWithVolume(manager.ScenarioTest):"},{"line_number":24,"context_line":"    \"\"\"Verifying functionality of rebuild instance with attached volume."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    The following is the scenario outline:"},{"line_number":27,"context_line":"    1. Boot an instance"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_32140df4","line":24,"range":{"start_line":24,"start_character":34,"end_line":24,"end_character":41},"updated":"2016-02-03 15:55:41.000000000","message":"rebuilding","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    The following is the scenario outline:"},{"line_number":27,"context_line":"    1. Boot an instance"},{"line_number":28,"context_line":"    2. Create a volume"},{"line_number":29,"context_line":"    3. Attach volume to instance"},{"line_number":30,"context_line":"    4. Create a file with timestamp on volume"},{"line_number":31,"context_line":"    5. Rebuild instance"},{"line_number":32,"context_line":"    6. Check the existence of a file which created at 4"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_e369ca8c","line":29,"updated":"2016-02-03 15:55:41.000000000","message":"Attach the volume to the instance","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    1. Boot an instance"},{"line_number":28,"context_line":"    2. Create a volume"},{"line_number":29,"context_line":"    3. Attach volume to instance"},{"line_number":30,"context_line":"    4. Create a file with timestamp on volume"},{"line_number":31,"context_line":"    5. Rebuild instance"},{"line_number":32,"context_line":"    6. Check the existence of a file which created at 4"},{"line_number":33,"context_line":"    7. Detach volume"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_a33192a4","line":30,"updated":"2016-02-03 15:55:41.000000000","message":"Create a file with a timestamp on the volume","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    2. Create a volume"},{"line_number":29,"context_line":"    3. Attach volume to instance"},{"line_number":30,"context_line":"    4. Create a file with timestamp on volume"},{"line_number":31,"context_line":"    5. Rebuild instance"},{"line_number":32,"context_line":"    6. Check the existence of a file which created at 4"},{"line_number":33,"context_line":"    7. Detach volume"},{"line_number":34,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_231e020d","line":31,"updated":"2016-02-03 15:55:41.000000000","message":"Rebuild the instance","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    3. Attach volume to instance"},{"line_number":30,"context_line":"    4. Create a file with timestamp on volume"},{"line_number":31,"context_line":"    5. Rebuild instance"},{"line_number":32,"context_line":"    6. Check the existence of a file which created at 4"},{"line_number":33,"context_line":"    7. Detach volume"},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_c3c84e77","line":32,"updated":"2016-02-03 15:55:41.000000000","message":"Check the existence of the file which was created at 4","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    4. Create a file with timestamp on volume"},{"line_number":31,"context_line":"    5. Rebuild instance"},{"line_number":32,"context_line":"    6. Check the existence of a file which created at 4"},{"line_number":33,"context_line":"    7. Detach volume"},{"line_number":34,"context_line":"    \"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_2393625d","line":33,"updated":"2016-02-03 15:55:41.000000000","message":"Detach the volume","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    @test.idempotent_id(\u002736c3d492-f5bd-11e4-b9b2-1697f925ec7b\u0027)"},{"line_number":37,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027, \u0027image\u0027, \u0027network\u0027)"},{"line_number":38,"context_line":"    def test_rebuild_instance_with_volume(self):"},{"line_number":39,"context_line":"        # prepare for booting an instance"},{"line_number":40,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":41,"context_line":"        security_group \u003d self._create_security_group()"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_c3c4ce41","line":39,"range":{"start_line":39,"start_character":10,"end_line":39,"end_character":17},"updated":"2016-02-03 15:55:41.000000000","message":"create key pair and security group to use them when booting an instance","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"4c061943228299f43de3581be1210e362d607096","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # get instance IP"},{"line_number":51,"context_line":"        server_ip \u003d self.get_server_or_ip(server)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # create volume, attach it and create timestamp file on it"},{"line_number":54,"context_line":"        volume \u003d self.create_volume()"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_8046b921","line":51,"updated":"2016-02-03 21:11:07.000000000","message":"This function no longer exists, so this will have to be updated once this patch is rebased","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"32ad16770f9a39daae7c9fa98ea83f068c2ba649","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # rebuild instance"},{"line_number":69,"context_line":"        self.rebuild_server(server[\u0027id\u0027])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # verify that VM was actually rebuilt"},{"line_number":72,"context_line":"        actual_fstab \u003d ssh_client.exec_command(\u0027cat /etc/fstab\u0027)"},{"line_number":73,"context_line":"        self.assertNotEqual(fstab, actual_fstab, \u0027Server was not rebuilt\u0027)"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_1ed9ddf3","line":71,"range":{"start_line":71,"start_character":22,"end_line":71,"end_character":24},"updated":"2016-02-03 15:55:41.000000000","message":"instance","commit_id":"adb79f84610825c7703fbabe5c955234670710fa"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"f07e12bab7ade936819b6ea9b76546482e7e6bc1","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # so we should verify that VM was actually rebuilt"},{"line_number":63,"context_line":"        ssh_client \u003d self.get_remote_client(server_ip,"},{"line_number":64,"context_line":"                                            private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":65,"context_line":"        cmd_addstamp \u003d \u0027sudo sh -c \"echo \\\u0027#check_rebuild\\\u0027 \u003e\u003e /etc/fstab\"\u0027"},{"line_number":66,"context_line":"        fstab \u003d ssh_client.exec_command(\u0027%s; cat /etc/fstab\u0027 % cmd_addstamp)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # rebuild instance"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a5ae5dd_1842f968","line":65,"updated":"2016-02-05 02:03:12.000000000","message":"It looks like it will not work in some cases. We may be requested by OS to enter the password because you use \"sudo\" and in this case the test will fail.","commit_id":"7e2ba2261149f802c0a0b1e6d0796d4c353da270"},{"author":{"_account_id":13454,"name":"Alexander Gubanov","email":"ogubanov@mirantis.com","username":"hop"},"change_message_id":"f07b86c4cafefcabd5a0a025bec8c2657abfac16","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # so we should verify that VM was actually rebuilt"},{"line_number":63,"context_line":"        ssh_client \u003d self.get_remote_client(server_ip,"},{"line_number":64,"context_line":"                                            private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":65,"context_line":"        cmd_addstamp \u003d \u0027sudo sh -c \"echo \\\u0027#check_rebuild\\\u0027 \u003e\u003e /etc/fstab\"\u0027"},{"line_number":66,"context_line":"        fstab \u003d ssh_client.exec_command(\u0027%s; cat /etc/fstab\u0027 % cmd_addstamp)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # rebuild instance"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a5ae5dd_4902d33e","line":65,"in_reply_to":"5a5ae5dd_1842f968","updated":"2016-02-05 10:40:53.000000000","message":"Yaroslav, I disagree.\nIn this case we also should cancel all tests that use methods \"get_timestamp\" and \"create_timestamp\"- (test_shelve_instance.py, test_snapshot_pattern.py, test_volume_boot_pattern.py) because it use \"sudo\".\n\nAnd other tests with \"sudo\":\n\ngrep \u0027sudo \u0027 ./tempest/common/utils/linux/remote_client.py","commit_id":"7e2ba2261149f802c0a0b1e6d0796d4c353da270"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"63288699f1faa55d5812a7ad65640c662d4c54f2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # so we should verify that VM was actually rebuilt"},{"line_number":63,"context_line":"        ssh_client \u003d self.get_remote_client(server_ip,"},{"line_number":64,"context_line":"                                            private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":65,"context_line":"        cmd_addstamp \u003d \u0027sudo sh -c \"echo \\\u0027#check_rebuild\\\u0027 \u003e\u003e /etc/fstab\"\u0027"},{"line_number":66,"context_line":"        fstab \u003d ssh_client.exec_command(\u0027%s; cat /etc/fstab\u0027 % cmd_addstamp)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # rebuild instance"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a5ae5dd_78299736","line":65,"in_reply_to":"5a5ae5dd_4902d33e","updated":"2016-02-05 12:49:48.000000000","message":"sudo is password less in many OpenStack-ready images. This should be fine.","commit_id":"7e2ba2261149f802c0a0b1e6d0796d4c353da270"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"979a7dd43b585d1232e683baefb5b9d27cd09e96","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # so we should verify that VM was actually rebuilt"},{"line_number":63,"context_line":"        ssh_client \u003d self.get_remote_client(server_ip,"},{"line_number":64,"context_line":"                                            private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":65,"context_line":"        cmd_addstamp \u003d \u0027sudo sh -c \"echo \\\u0027#check_rebuild\\\u0027 \u003e\u003e /etc/fstab\"\u0027"},{"line_number":66,"context_line":"        fstab \u003d ssh_client.exec_command(\u0027%s; cat /etc/fstab\u0027 % cmd_addstamp)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # rebuild instance"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a5ae5dd_4f3deec2","line":65,"in_reply_to":"5a5ae5dd_78299736","updated":"2016-02-05 13:20:06.000000000","message":"Ok guys, it was the only issue for me :)","commit_id":"7e2ba2261149f802c0a0b1e6d0796d4c353da270"}]}
