blob: a7b872fd7f053ea43b73220546b33906b34b9ccf [file] [log] [blame]
Marc Koderer341bf1c2013-07-11 15:16:08 +02001# (c) 2013 Deutsche Telekom AG
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14from tempest.common.utils.data_utils import rand_name
15import tempest.stress.stressaction as stressaction
16
17
18class VolumeAttachDeleteTest(stressaction.StressAction):
19
20 def setUp(self, **kwargs):
21 self.image = self.manager.config.compute.image_ref
22 self.flavor = self.manager.config.compute.flavor_ref
23
24 def run(self):
25 # Step 1: create volume
26 name = rand_name("volume")
27 self.logger.info("creating volume: %s" % name)
28 resp, volume = self.manager.volumes_client.create_volume(size=1,
29 display_name=
30 name)
31 assert(resp.status == 200)
32 self.manager.volumes_client.wait_for_volume_status(volume['id'],
33 'available')
34 self.logger.info("created volume: %s" % volume['id'])
35
36 # Step 2: create vm instance
37 vm_name = rand_name("instance")
38 self.logger.info("creating vm: %s" % vm_name)
39 resp, server = self.manager.servers_client.create_server(
40 vm_name, self.image, self.flavor)
41 server_id = server['id']
42 assert(resp.status == 202)
43 self.manager.servers_client.wait_for_server_status(server_id, 'ACTIVE')
44 self.logger.info("created vm %s" % server_id)
45
46 # Step 3: attach volume to vm
47 self.logger.info("attach volume (%s) to vm %s" %
48 (volume['id'], server_id))
49 resp, body = self.manager.servers_client.attach_volume(server_id,
50 volume['id'],
51 '/dev/vdc')
52 assert(resp.status == 200)
53 self.manager.volumes_client.wait_for_volume_status(volume['id'],
54 'in-use')
55 self.logger.info("volume (%s) attached to vm %s" %
56 (volume['id'], server_id))
57
58 # Step 4: delete vm
59 self.logger.info("deleting vm: %s" % vm_name)
60 resp, _ = self.manager.servers_client.delete_server(server_id)
61 assert(resp.status == 204)
62 self.manager.servers_client.wait_for_server_termination(server_id)
63 self.logger.info("deleted vm: %s" % server_id)
64
65 # Step 5: delete volume
66 self.logger.info("deleting volume: %s" % volume['id'])
67 resp, _ = self.manager.volumes_client.delete_volume(volume['id'])
68 assert(resp.status == 202)
69 self.manager.volumes_client.wait_for_resource_deletion(volume['id'])
70 self.logger.info("deleted volume: %s" % volume['id'])