blob: 439dd350bd15b02c0b8d8f5ddfef43168fd0950f [file] [log] [blame]
wanghaoaa1f2f92013-10-10 11:30:37 +08001# Copyright 2013 Huawei Technologies Co.,LTD
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Zhi Kun Liubb363a22013-11-28 18:47:39 +080016from tempest.api.volume import base
wanghaoaa1f2f92013-10-10 11:30:37 +080017from tempest.common.utils import data_utils as utils
Masayuki Igawaa279a682014-03-14 13:29:42 +090018from tempest import test
wanghaoaa1f2f92013-10-10 11:30:37 +080019
20
Chandan Kumar457d1632014-11-18 13:46:08 +053021class VolumesActionsV2Test(base.BaseVolumeAdminTest):
wanghaoaa1f2f92013-10-10 11:30:37 +080022
23 @classmethod
Andrea Frittoli61a12e22014-09-15 13:14:54 +010024 def resource_setup(cls):
Chandan Kumar457d1632014-11-18 13:46:08 +053025 super(VolumesActionsV2Test, cls).resource_setup()
wanghaoaa1f2f92013-10-10 11:30:37 +080026 cls.client = cls.volumes_client
27
wanghaoaa1f2f92013-10-10 11:30:37 +080028 # Create a test shared volume for tests
29 vol_name = utils.rand_name(cls.__name__ + '-Volume-')
Chandan Kumar457d1632014-11-18 13:46:08 +053030 cls.name_field = cls.special_fields['name_field']
31 params = {cls.name_field: vol_name}
wanghaoaa1f2f92013-10-10 11:30:37 +080032
Joseph Lanoux6809bab2014-12-18 14:57:18 +000033 cls.volume = cls.client.create_volume(size=1,
34 **params)
wanghaoaa1f2f92013-10-10 11:30:37 +080035 cls.client.wait_for_volume_status(cls.volume['id'], 'available')
36
37 @classmethod
Andrea Frittoli61a12e22014-09-15 13:14:54 +010038 def resource_cleanup(cls):
wanghaoaa1f2f92013-10-10 11:30:37 +080039 # Delete the test volume
40 cls.client.delete_volume(cls.volume['id'])
41 cls.client.wait_for_resource_deletion(cls.volume['id'])
42
Chandan Kumar457d1632014-11-18 13:46:08 +053043 super(VolumesActionsV2Test, cls).resource_cleanup()
wanghaoaa1f2f92013-10-10 11:30:37 +080044
45 def _reset_volume_status(self, volume_id, status):
wanghao9d3d6cb2013-11-12 15:10:10 +080046 # Reset the volume status
Joseph Lanoux6809bab2014-12-18 14:57:18 +000047 body = self.admin_volume_client.reset_volume_status(volume_id,
48 status)
49 return body
wanghaoaa1f2f92013-10-10 11:30:37 +080050
51 def tearDown(self):
52 # Set volume's status to available after test
53 self._reset_volume_status(self.volume['id'], 'available')
Chandan Kumar457d1632014-11-18 13:46:08 +053054 super(VolumesActionsV2Test, self).tearDown()
wanghaoaa1f2f92013-10-10 11:30:37 +080055
wanghao9d3d6cb2013-11-12 15:10:10 +080056 def _create_temp_volume(self):
57 # Create a temp volume for force delete tests
58 vol_name = utils.rand_name('Volume')
Chandan Kumar457d1632014-11-18 13:46:08 +053059 params = {self.name_field: vol_name}
Joseph Lanoux6809bab2014-12-18 14:57:18 +000060 temp_volume = self.client.create_volume(size=1,
61 **params)
wanghao9d3d6cb2013-11-12 15:10:10 +080062 self.client.wait_for_volume_status(temp_volume['id'], 'available')
63
64 return temp_volume
65
66 def _create_reset_and_force_delete_temp_volume(self, status=None):
67 # Create volume, reset volume status, and force delete temp volume
68 temp_volume = self._create_temp_volume()
69 if status:
Joseph Lanoux6809bab2014-12-18 14:57:18 +000070 self._reset_volume_status(temp_volume['id'], status)
71 self.admin_volume_client.force_delete_volume(temp_volume['id'])
wanghao9d3d6cb2013-11-12 15:10:10 +080072 self.client.wait_for_resource_deletion(temp_volume['id'])
73
Masayuki Igawaa279a682014-03-14 13:29:42 +090074 @test.attr(type='gate')
wanghaoaa1f2f92013-10-10 11:30:37 +080075 def test_volume_reset_status(self):
76 # test volume reset status : available->error->available
Joseph Lanoux6809bab2014-12-18 14:57:18 +000077 self._reset_volume_status(self.volume['id'], 'error')
78 volume_get = self.admin_volume_client.get_volume(
wanghaoaa1f2f92013-10-10 11:30:37 +080079 self.volume['id'])
80 self.assertEqual('error', volume_get['status'])
81
wanghao9d3d6cb2013-11-12 15:10:10 +080082 def test_volume_force_delete_when_volume_is_creating(self):
83 # test force delete when status of volume is creating
84 self._create_reset_and_force_delete_temp_volume('creating')
85
86 def test_volume_force_delete_when_volume_is_attaching(self):
87 # test force delete when status of volume is attaching
88 self._create_reset_and_force_delete_temp_volume('attaching')
89
Masayuki Igawaa279a682014-03-14 13:29:42 +090090 @test.attr(type='gate')
wanghao9d3d6cb2013-11-12 15:10:10 +080091 def test_volume_force_delete_when_volume_is_error(self):
92 # test force delete when status of volume is error
93 self._create_reset_and_force_delete_temp_volume('error')
94
wanghaoaa1f2f92013-10-10 11:30:37 +080095
Chandan Kumar457d1632014-11-18 13:46:08 +053096class VolumesActionsV1Test(VolumesActionsV2Test):
97 _api_version = 1