blob: 048c340531649e3c94ba9f414a39417244ff852f [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
18from nose.plugins.attrib import attr
19
20from tempest.common.utils.data_utils import rand_name
Matthew Treinish9854d5b2012-09-20 10:22:13 -040021from tempest.tests.volume import base
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070022
23
Matthew Treinish9854d5b2012-09-20 10:22:13 -040024class VolumesGetTestBase(object):
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070025
26 @attr(type='smoke')
27 def test_volume_create_get_delete(self):
28 """Create a volume, Get it's details and Delete the volume"""
29 try:
30 volume = {}
31 v_name = rand_name('Volume-')
32 metadata = {'Type': 'work'}
33 #Create a volume
34 resp, volume = self.client.create_volume(size=1,
35 display_name=v_name,
36 metadata=metadata)
37 self.assertEqual(200, resp.status)
38 self.assertTrue('id' in volume)
39 self.assertTrue('display_name' in volume)
40 self.assertEqual(volume['display_name'], v_name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080041 "The created volume name is not equal "
42 "to the requested name")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070043 self.assertTrue(volume['id'] is not None,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080044 "Field volume id is empty or not found.")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070045 self.client.wait_for_volume_status(volume['id'], 'available')
46 # Get Volume information
47 resp, fetched_volume = self.client.get_volume(volume['id'])
48 self.assertEqual(200, resp.status)
49 self.assertEqual(v_name,
50 fetched_volume['display_name'],
51 'The fetched Volume is different '
52 'from the created Volume')
53 self.assertEqual(volume['id'],
54 fetched_volume['id'],
55 'The fetched Volume is different '
56 'from the created Volume')
57 self.assertEqual(metadata,
58 fetched_volume['metadata'],
59 'The fetched Volume is different '
60 'from the created Volume')
Matthew Treinish05d9fb92012-12-07 16:14:05 -050061 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070062 self.fail("Could not create a volume")
63 finally:
64 if volume:
65 # Delete the Volume if it was created
66 resp, _ = self.client.delete_volume(volume['id'])
67 self.assertEqual(202, resp.status)
68 self.client.wait_for_resource_deletion(volume['id'])
69
70 @attr(type='positive')
71 def test_volume_get_metadata_none(self):
72 """Create a volume without passing metadata, get details, and delete"""
73 try:
74 volume = {}
75 v_name = rand_name('Volume-')
76 # Create a volume without metadata
77 resp, volume = self.client.create_volume(size=1,
78 display_name=v_name,
79 metadata={})
80 self.assertEqual(200, resp.status)
81 self.assertTrue('id' in volume)
82 self.assertTrue('display_name' in volume)
83 self.client.wait_for_volume_status(volume['id'], 'available')
84 #GET Volume
85 resp, fetched_volume = self.client.get_volume(volume['id'])
86 self.assertEqual(200, resp.status)
87 self.assertEqual(fetched_volume['metadata'], {})
Matthew Treinish05d9fb92012-12-07 16:14:05 -050088 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070089 self.fail("Could not get volume metadata")
90 finally:
91 if volume:
92 # Delete the Volume if it was created
93 resp, _ = self.client.delete_volume(volume['id'])
94 self.assertEqual(202, resp.status)
95 self.client.wait_for_resource_deletion(volume['id'])
Matthew Treinish9854d5b2012-09-20 10:22:13 -040096
97
98class VolumesGetTestXML(base.BaseVolumeTestXML, VolumesGetTestBase):
99 @classmethod
100 def setUpClass(cls):
101 cls._interface = "xml"
102 super(VolumesGetTestXML, cls).setUpClass()
103 cls.client = cls.volumes_client
104
105
106class VolumesGetTestJSON(base.BaseVolumeTestJSON, VolumesGetTestBase):
107 @classmethod
108 def setUpClass(cls):
109 cls._interface = "json"
110 super(VolumesGetTestJSON, cls).setUpClass()
111 cls.client = cls.volumes_client