blob: 99e9eb62d8a3d9ca452d843f22bca47b84202a65 [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
Fei Long Wangd39431f2015-05-14 11:30:48 +120014from tempest.common.utils import data_utils
Ken'ichi Ohmichi0eb153c2015-07-13 02:18:25 +000015from tempest.common import waiters
Matthew Treinish88f49ef2014-01-29 18:36:27 +000016from tempest import config
Marc Koderer341bf1c2013-07-11 15:16:08 +020017import tempest.stress.stressaction as stressaction
18
Matthew Treinish88f49ef2014-01-29 18:36:27 +000019CONF = config.CONF
20
Marc Koderer341bf1c2013-07-11 15:16:08 +020021
22class VolumeAttachDeleteTest(stressaction.StressAction):
23
24 def setUp(self, **kwargs):
Matthew Treinish88f49ef2014-01-29 18:36:27 +000025 self.image = CONF.compute.image_ref
26 self.flavor = CONF.compute.flavor_ref
Marc Koderer341bf1c2013-07-11 15:16:08 +020027
28 def run(self):
29 # Step 1: create volume
Masayuki Igawa259c1132013-10-31 17:48:44 +090030 name = data_utils.rand_name("volume")
Marc Koderer341bf1c2013-07-11 15:16:08 +020031 self.logger.info("creating volume: %s" % name)
David Kranz668d3892015-02-16 09:20:08 -050032 volume = self.manager.volumes_client.create_volume(
Matthew Treinish57160582014-06-09 17:13:48 -040033 display_name=name)
Marc Koderer341bf1c2013-07-11 15:16:08 +020034 self.manager.volumes_client.wait_for_volume_status(volume['id'],
35 'available')
36 self.logger.info("created volume: %s" % volume['id'])
37
38 # Step 2: create vm instance
Masayuki Igawa259c1132013-10-31 17:48:44 +090039 vm_name = data_utils.rand_name("instance")
Marc Koderer341bf1c2013-07-11 15:16:08 +020040 self.logger.info("creating vm: %s" % vm_name)
David Kranz668d3892015-02-16 09:20:08 -050041 server = self.manager.servers_client.create_server(
Marc Koderer341bf1c2013-07-11 15:16:08 +020042 vm_name, self.image, self.flavor)
43 server_id = server['id']
Ken'ichi Ohmichi0eb153c2015-07-13 02:18:25 +000044 waiters.wait_for_server_status(self.manager.servers_client, server_id,
45 'ACTIVE')
Marc Koderer341bf1c2013-07-11 15:16:08 +020046 self.logger.info("created vm %s" % server_id)
47
48 # Step 3: attach volume to vm
49 self.logger.info("attach volume (%s) to vm %s" %
Matthew Treinish1d14c542014-06-17 20:25:40 -040050 (volume['id'], server_id))
ghanshyam51e84f42014-10-02 17:28:18 +090051 self.manager.servers_client.attach_volume(server_id,
Ken'ichi Ohmichidfc88de2015-08-13 05:12:20 +000052 volumeId=volume['id'],
53 device='/dev/vdc')
Marc Koderer341bf1c2013-07-11 15:16:08 +020054 self.manager.volumes_client.wait_for_volume_status(volume['id'],
55 'in-use')
56 self.logger.info("volume (%s) attached to vm %s" %
57 (volume['id'], server_id))
58
59 # Step 4: delete vm
60 self.logger.info("deleting vm: %s" % vm_name)
ghanshyam51e84f42014-10-02 17:28:18 +090061 self.manager.servers_client.delete_server(server_id)
Marc Koderer341bf1c2013-07-11 15:16:08 +020062 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'])
ghanshyam51e84f42014-10-02 17:28:18 +090067 self.manager.volumes_client.delete_volume(volume['id'])
Marc Koderer341bf1c2013-07-11 15:16:08 +020068 self.manager.volumes_client.wait_for_resource_deletion(volume['id'])
69 self.logger.info("deleted volume: %s" % volume['id'])