Add common "create_server_snapshot" method
There are some "create server-snapshot" methods in scenario tests,
and they will increase in the future by increasing scenario tests.
This patch adds common "create_server_snapshot" method to parent
class and uses it instead of each implementation.
Change-Id: Ib8a222d74828933c48bc6b0e8350cc072f01af4d
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index e93d9bc..58c9a3d 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -373,6 +373,24 @@
LOG.debug("Created volume: %s", volume)
return volume
+ def create_server_snapshot(self, server, compute_client=None,
+ image_client=None, name=None):
+ if compute_client is None:
+ compute_client = self.compute_client
+ if image_client is None:
+ image_client = self.image_client
+ if name is None:
+ name = rand_name('scenario-snapshot-')
+ LOG.debug("Creating a snapshot image for server: %s", server.name)
+ image_id = compute_client.servers.create_image(server, name)
+ self.addCleanup(image_client.images.delete, image_id)
+ self.status_timeout(image_client.images, image_id, 'active')
+ snapshot_image = image_client.images.get(image_id)
+ self.assertEquals(name, snapshot_image.name)
+ LOG.debug("Created snapshot image %s for server %s",
+ snapshot_image.name, server.name)
+ return snapshot_image
+
def create_keypair(self, client=None, name=None):
if client is None:
client = self.compute_client
diff --git a/tempest/scenario/test_snapshot_pattern.py b/tempest/scenario/test_snapshot_pattern.py
index c55e2a3..95d2862 100644
--- a/tempest/scenario/test_snapshot_pattern.py
+++ b/tempest/scenario/test_snapshot_pattern.py
@@ -15,7 +15,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from tempest.common.utils.data_utils import rand_name
from tempest.openstack.common import log as logging
from tempest.scenario import manager
@@ -34,14 +33,6 @@
"""
- def _wait_for_server_status(self, server, status):
- self.status_timeout(self.compute_client.servers,
- server.id,
- status)
-
- def _wait_for_image_status(self, image_id, status):
- self.status_timeout(self.image_client.images, image_id, status)
-
def _boot_image(self, image_id):
create_kwargs = {
'key_name': self.keypair.name
@@ -61,17 +52,6 @@
ssh_client.exec_command('date > /tmp/timestamp; sync')
self.timestamp = ssh_client.exec_command('cat /tmp/timestamp')
- def _create_image(self, server):
- snapshot_name = rand_name('scenario-snapshot-')
- create_image_client = self.compute_client.servers.create_image
- image_id = create_image_client(server, snapshot_name)
- self.addCleanup(self.image_client.images.delete, image_id)
- self._wait_for_server_status(server, 'ACTIVE')
- self._wait_for_image_status(image_id, 'active')
- snapshot_image = self.image_client.images.get(image_id)
- self.assertEquals(snapshot_name, snapshot_image.name)
- return image_id
-
def _check_timestamp(self, server_or_ip):
ssh_client = self._ssh_to_server(server_or_ip)
got_timestamp = ssh_client.exec_command('cat /tmp/timestamp')
@@ -100,10 +80,10 @@
self._write_timestamp(server)
# snapshot the instance
- snapshot_image_id = self._create_image(server)
+ snapshot_image = self.create_server_snapshot(server=server)
# boot a second instance from the snapshot
- server_from_snapshot = self._boot_image(snapshot_image_id)
+ server_from_snapshot = self._boot_image(snapshot_image.id)
# check the existence of the timestamp file in the second instance
if self.config.compute.use_floatingip_for_ssh:
diff --git a/tempest/scenario/test_stamp_pattern.py b/tempest/scenario/test_stamp_pattern.py
index c74b88d..3cbd1fa 100644
--- a/tempest/scenario/test_stamp_pattern.py
+++ b/tempest/scenario/test_stamp_pattern.py
@@ -50,14 +50,6 @@
14. Check the existence of a file which created at 6. in volume2
"""
- def _wait_for_server_status(self, server, status):
- self.status_timeout(self.compute_client.servers,
- server.id,
- status)
-
- def _wait_for_image_status(self, image_id, status):
- self.status_timeout(self.image_client.images, image_id, status)
-
def _wait_for_volume_snapshot_status(self, volume_snapshot, status):
self.status_timeout(self.volume_client.volume_snapshots,
volume_snapshot.id, status)
@@ -84,17 +76,6 @@
linux_client = self.get_remote_client(server_or_ip)
return linux_client.ssh_client
- def _create_image(self, server):
- snapshot_name = rand_name('scenario-snapshot-')
- create_image_client = self.compute_client.servers.create_image
- image_id = create_image_client(server, snapshot_name)
- self.addCleanup(self.image_client.images.delete, image_id)
- self._wait_for_server_status(server, 'ACTIVE')
- self._wait_for_image_status(image_id, 'active')
- snapshot_image = self.image_client.images.get(image_id)
- self.assertEquals(snapshot_name, snapshot_image.name)
- return image_id
-
def _create_volume_snapshot(self, volume):
snapshot_name = rand_name('scenario-snapshot-')
volume_snapshots = self.volume_client.volume_snapshots
@@ -189,14 +170,14 @@
volume_snapshot = self._create_volume_snapshot(volume)
# snapshot the instance
- snapshot_image_id = self._create_image(server)
+ snapshot_image = self.create_server_snapshot(server=server)
# create second volume from the snapshot(volume2)
volume_from_snapshot = self._create_volume(
snapshot_id=volume_snapshot.id)
# boot second instance from the snapshot(instance2)
- server_from_snapshot = self._boot_image(snapshot_image_id)
+ server_from_snapshot = self._boot_image(snapshot_image.id)
# create and add floating IP to server_from_snapshot
if self.config.compute.use_floatingip_for_ssh: