diff options
| author | Dean Troyer <dtroyer@gmail.com> | 2017-01-25 11:19:36 -0600 |
|---|---|---|
| committer | Dean Troyer <dtroyer@gmail.com> | 2017-01-25 19:56:34 +0000 |
| commit | 5ecb353f891cf6fc0a132b7cc232e51ea39be348 (patch) | |
| tree | 57a7ed5ed3ffd4598502d75a58fe21ea99e83a18 /openstackclient | |
| parent | 9ada3b529d60c174b7daa8db2a2fe5ebe619cced (diff) | |
| download | python-openstackclient-5ecb353f891cf6fc0a132b7cc232e51ea39be348.tar.gz | |
Add server_boot_from_volume() test
Plucked this test out of I5529f412578c50090e70d17aa0129217bf803fed in
order to validate the current behaviour before applying that change.
It was converted to the new JSON-style.
Change-Id: Ie51b1c375c5940856ec76a5770df3c6bd18a3eba
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/tests/functional/compute/v2/test_server.py | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/openstackclient/tests/functional/compute/v2/test_server.py b/openstackclient/tests/functional/compute/v2/test_server.py index ffdfa6c8..b6ef8587 100644 --- a/openstackclient/tests/functional/compute/v2/test_server.py +++ b/openstackclient/tests/functional/compute/v2/test_server.py @@ -16,6 +16,7 @@ import time from tempest.lib.common.utils import data_utils from openstackclient.tests.functional import base +from openstackclient.tests.functional.volume.v2 import test_volume from tempest.lib import exceptions @@ -318,6 +319,120 @@ class ServerTests(base.TestCase): self.assertEqual("", raw_output) self.wait_for_status("ACTIVE") + def test_server_boot_from_volume(self): + """Test server create from volume, server delete + + Test steps: + 1) Create volume from image + 2) Create empty volume + 3) Create server from new volumes + 4) Check for ACTIVE new server status + 5) Check volumes attached to server + """ + # server_image = self.get_image() + # get volume status wait function + volume_wait_for = test_volume.VolumeTests( + methodName='wait_for', + ).wait_for + + # get image size + cmd_output = json.loads(self.openstack( + 'image show -f json ' + + self.image_name + )) + try: + image_size = cmd_output['min_disk'] + if image_size < 1: + image_size = 1 + except ValueError: + image_size = 1 + + # create volume from image + volume_name = data_utils.rand_name('volume', self.image_name) + cmd_output = json.loads(self.openstack( + 'volume create -f json ' + + '--image ' + self.image_name + ' ' + + '--size ' + str(image_size) + ' ' + + volume_name + )) + self.assertIsNotNone(cmd_output["id"]) + self.addCleanup(self.openstack, 'volume delete ' + volume_name) + self.assertEqual( + volume_name, + cmd_output['name'], + ) + volume_wait_for("volume", volume_name, "available") + + # create empty volume + empty_volume_name = data_utils.rand_name('TestVolume') + cmd_output = json.loads(self.openstack( + 'volume create -f json ' + + '--size ' + str(image_size) + ' ' + + empty_volume_name + )) + self.assertIsNotNone(cmd_output["id"]) + self.addCleanup(self.openstack, 'volume delete ' + empty_volume_name) + self.assertEqual( + empty_volume_name, + cmd_output['name'], + ) + volume_wait_for("volume", empty_volume_name, "available") + + # create server + server_name = data_utils.rand_name('TestServer') + server = json.loads(self.openstack( + 'server create -f json ' + + '--flavor ' + self.flavor_name + ' ' + + '--volume ' + volume_name + ' ' + + '--block-device-mapping vdb=' + empty_volume_name + ' ' + + self.network_arg + ' ' + + server_name + )) + self.assertIsNotNone(server["id"]) + self.addCleanup(self.openstack, 'server delete --wait ' + server_name) + self.assertEqual( + server_name, + server['name'], + ) + volume_wait_for("server", server_name, "ACTIVE") + + # check volumes + cmd_output = json.loads(self.openstack( + 'volume show -f json ' + + volume_name + )) + attachments = cmd_output['attachments'] + self.assertEqual( + 1, + len(attachments), + ) + self.assertEqual( + server['id'], + attachments[0]['server_id'], + ) + self.assertEqual( + "in-use", + cmd_output['status'], + ) + + # NOTE(dtroyer): Prior to https://review.openstack.org/#/c/407111 + # --block-device-mapping was ignored if --volume + # present on the command line, so this volume should + # not be attached. + cmd_output = json.loads(self.openstack( + 'volume show -f json ' + + empty_volume_name + )) + attachments = cmd_output['attachments'] + self.assertEqual( + 0, + len(attachments), + ) + self.assertEqual( + "available", + cmd_output['status'], + ) + def wait_for_status(self, expected_status='ACTIVE', wait=900, interval=30): """Wait until server reaches expected status.""" # TODO(thowe): Add a server wait command to osc |
