blob: eda7153779edcaae471212595757cc130cf25836 [file] [log] [blame]
Rohit Karajgidd47d7e2012-07-31 04:11:01 -07001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
Sean Dague1937d092013-05-17 16:36:38 -040018from tempest.api.volume import base
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070019from tempest.common.utils.data_utils import rand_name
Chris Yeoh01cb2792013-02-09 22:25:37 +103020from tempest.test import attr
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070021
22
Attila Fazekas3dcdae12013-02-14 12:50:04 +010023class VolumesGetTest(base.BaseVolumeTest):
Attila Fazekas3dcdae12013-02-14 12:50:04 +010024 _interface = "json"
25
26 @classmethod
27 def setUpClass(cls):
28 super(VolumesGetTest, cls).setUpClass()
29 cls.client = cls.volumes_client
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070030
Giulio Fidente02f42982013-06-17 16:25:56 +020031 def _volume_create_get_delete(self, **kwargs):
Sean Dague72a00382013-01-03 17:53:38 -050032 # Create a volume, Get it's details and Delete the volume
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070033 try:
34 volume = {}
Giulio Fidente02f42982013-06-17 16:25:56 +020035 v_name = rand_name('Volume')
36 metadata = {'Type': 'Test'}
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070037 #Create a volume
Giulio Fidente02f42982013-06-17 16:25:56 +020038 resp, volume = self.client.create_volume(size=1,
39 display_name=v_name,
40 metadata=metadata,
41 **kwargs)
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070042 self.assertEqual(200, resp.status)
43 self.assertTrue('id' in volume)
44 self.assertTrue('display_name' in volume)
45 self.assertEqual(volume['display_name'], v_name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080046 "The created volume name is not equal "
47 "to the requested name")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070048 self.assertTrue(volume['id'] is not None,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080049 "Field volume id is empty or not found.")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070050 self.client.wait_for_volume_status(volume['id'], 'available')
51 # Get Volume information
52 resp, fetched_volume = self.client.get_volume(volume['id'])
53 self.assertEqual(200, resp.status)
54 self.assertEqual(v_name,
55 fetched_volume['display_name'],
56 'The fetched Volume is different '
57 'from the created Volume')
58 self.assertEqual(volume['id'],
59 fetched_volume['id'],
60 'The fetched Volume is different '
61 'from the created Volume')
62 self.assertEqual(metadata,
63 fetched_volume['metadata'],
64 'The fetched Volume is different '
65 'from the created Volume')
Matthew Treinish05d9fb92012-12-07 16:14:05 -050066 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070067 self.fail("Could not create a volume")
68 finally:
69 if volume:
70 # Delete the Volume if it was created
71 resp, _ = self.client.delete_volume(volume['id'])
72 self.assertEqual(202, resp.status)
73 self.client.wait_for_resource_deletion(volume['id'])
74
Giulio Fidente8b311902013-05-12 15:40:31 +020075 @attr(type='gate')
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070076 def test_volume_get_metadata_none(self):
Sean Dague72a00382013-01-03 17:53:38 -050077 # Create a volume without passing metadata, get details, and delete
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070078 try:
79 volume = {}
80 v_name = rand_name('Volume-')
81 # Create a volume without metadata
82 resp, volume = self.client.create_volume(size=1,
83 display_name=v_name,
84 metadata={})
85 self.assertEqual(200, resp.status)
86 self.assertTrue('id' in volume)
87 self.assertTrue('display_name' in volume)
88 self.client.wait_for_volume_status(volume['id'], 'available')
89 #GET Volume
90 resp, fetched_volume = self.client.get_volume(volume['id'])
91 self.assertEqual(200, resp.status)
92 self.assertEqual(fetched_volume['metadata'], {})
Matthew Treinish05d9fb92012-12-07 16:14:05 -050093 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070094 self.fail("Could not get volume metadata")
95 finally:
96 if volume:
97 # Delete the Volume if it was created
98 resp, _ = self.client.delete_volume(volume['id'])
99 self.assertEqual(202, resp.status)
100 self.client.wait_for_resource_deletion(volume['id'])
Matthew Treinish9854d5b2012-09-20 10:22:13 -0400101
Giulio Fidenteba3985a2013-05-29 01:46:36 +0200102 @attr(type='smoke')
Giulio Fidente36836c42013-04-05 15:43:51 +0200103 def test_volume_create_get_delete(self):
Giulio Fidente02f42982013-06-17 16:25:56 +0200104 self._volume_create_get_delete()
Giulio Fidente36836c42013-04-05 15:43:51 +0200105
Giulio Fidenteba3985a2013-05-29 01:46:36 +0200106 @attr(type='smoke')
Giulio Fidente02f42982013-06-17 16:25:56 +0200107 def test_volume_create_get_delete_from_image(self):
108 self._volume_create_get_delete(imageRef=self.config.compute.image_ref)
109
110 @attr(type='gate')
111 def test_volume_create_get_delete_as_clone(self):
112 origin = self.create_volume(size=1,
113 display_name="Volume Origin")
114 self._volume_create_get_delete(source_volid=origin['id'])
Giulio Fidente36836c42013-04-05 15:43:51 +0200115
Matthew Treinish9854d5b2012-09-20 10:22:13 -0400116
Attila Fazekas3dcdae12013-02-14 12:50:04 +0100117class VolumesGetTestXML(VolumesGetTest):
118 _interface = "xml"