blob: a246afe01d8b0c3f12dee4cd7384dfe515023f80 [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
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070018from tempest.common.utils.data_utils import rand_name
Chris Yeoh01cb2792013-02-09 22:25:37 +103019from tempest.test import attr
Matthew Treinish9854d5b2012-09-20 10:22:13 -040020from tempest.tests.volume import base
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070021
22
Attila Fazekas3dcdae12013-02-14 12:50:04 +010023class VolumesGetTest(base.BaseVolumeTest):
24
25 _interface = "json"
26
27 @classmethod
28 def setUpClass(cls):
29 super(VolumesGetTest, cls).setUpClass()
30 cls.client = cls.volumes_client
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070031
32 @attr(type='smoke')
33 def test_volume_create_get_delete(self):
Sean Dague72a00382013-01-03 17:53:38 -050034 # Create a volume, Get it's details and Delete the volume
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070035 try:
36 volume = {}
37 v_name = rand_name('Volume-')
38 metadata = {'Type': 'work'}
39 #Create a volume
40 resp, volume = self.client.create_volume(size=1,
41 display_name=v_name,
42 metadata=metadata)
43 self.assertEqual(200, resp.status)
44 self.assertTrue('id' in volume)
45 self.assertTrue('display_name' in volume)
46 self.assertEqual(volume['display_name'], v_name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080047 "The created volume name is not equal "
48 "to the requested name")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070049 self.assertTrue(volume['id'] is not None,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080050 "Field volume id is empty or not found.")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070051 self.client.wait_for_volume_status(volume['id'], 'available')
52 # Get Volume information
53 resp, fetched_volume = self.client.get_volume(volume['id'])
54 self.assertEqual(200, resp.status)
55 self.assertEqual(v_name,
56 fetched_volume['display_name'],
57 'The fetched Volume is different '
58 'from the created Volume')
59 self.assertEqual(volume['id'],
60 fetched_volume['id'],
61 'The fetched Volume is different '
62 'from the created Volume')
63 self.assertEqual(metadata,
64 fetched_volume['metadata'],
65 'The fetched Volume is different '
66 'from the created Volume')
Matthew Treinish05d9fb92012-12-07 16:14:05 -050067 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070068 self.fail("Could not create a volume")
69 finally:
70 if volume:
71 # Delete the Volume if it was created
72 resp, _ = self.client.delete_volume(volume['id'])
73 self.assertEqual(202, resp.status)
74 self.client.wait_for_resource_deletion(volume['id'])
75
76 @attr(type='positive')
77 def test_volume_get_metadata_none(self):
Sean Dague72a00382013-01-03 17:53:38 -050078 # Create a volume without passing metadata, get details, and delete
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070079 try:
80 volume = {}
81 v_name = rand_name('Volume-')
82 # Create a volume without metadata
83 resp, volume = self.client.create_volume(size=1,
84 display_name=v_name,
85 metadata={})
86 self.assertEqual(200, resp.status)
87 self.assertTrue('id' in volume)
88 self.assertTrue('display_name' in volume)
89 self.client.wait_for_volume_status(volume['id'], 'available')
90 #GET Volume
91 resp, fetched_volume = self.client.get_volume(volume['id'])
92 self.assertEqual(200, resp.status)
93 self.assertEqual(fetched_volume['metadata'], {})
Matthew Treinish05d9fb92012-12-07 16:14:05 -050094 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070095 self.fail("Could not get volume metadata")
96 finally:
97 if volume:
98 # Delete the Volume if it was created
99 resp, _ = self.client.delete_volume(volume['id'])
100 self.assertEqual(202, resp.status)
101 self.client.wait_for_resource_deletion(volume['id'])
Matthew Treinish9854d5b2012-09-20 10:22:13 -0400102
103
Attila Fazekas3dcdae12013-02-14 12:50:04 +0100104class VolumesGetTestXML(VolumesGetTest):
105 _interface = "xml"