blob: fdaf09b90c24beba8985f9d22bc6bb4d1ef08628 [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
Giulio Fidente36836c42013-04-05 15:43:51 +020032 def _volume_create_get_delete(self, image_ref=None):
Sean Dague72a00382013-01-03 17:53:38 -050033 # Create a volume, Get it's details and Delete the volume
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070034 try:
35 volume = {}
36 v_name = rand_name('Volume-')
37 metadata = {'Type': 'work'}
38 #Create a volume
Giulio Fidente36836c42013-04-05 15:43:51 +020039 if not image_ref:
40 resp, volume = self.client.create_volume(size=1,
41 display_name=v_name,
42 metadata=metadata)
43 else:
44 resp, volume = self.client.create_volume(size=1,
45 display_name=v_name,
46 metadata=metadata,
47 imageRef=image_ref)
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070048 self.assertEqual(200, resp.status)
49 self.assertTrue('id' in volume)
50 self.assertTrue('display_name' in volume)
51 self.assertEqual(volume['display_name'], v_name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080052 "The created volume name is not equal "
53 "to the requested name")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070054 self.assertTrue(volume['id'] is not None,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080055 "Field volume id is empty or not found.")
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070056 self.client.wait_for_volume_status(volume['id'], 'available')
57 # Get Volume information
58 resp, fetched_volume = self.client.get_volume(volume['id'])
59 self.assertEqual(200, resp.status)
60 self.assertEqual(v_name,
61 fetched_volume['display_name'],
62 'The fetched Volume is different '
63 'from the created Volume')
64 self.assertEqual(volume['id'],
65 fetched_volume['id'],
66 'The fetched Volume is different '
67 'from the created Volume')
68 self.assertEqual(metadata,
69 fetched_volume['metadata'],
70 'The fetched Volume is different '
71 'from the created Volume')
Matthew Treinish05d9fb92012-12-07 16:14:05 -050072 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070073 self.fail("Could not create a volume")
74 finally:
75 if volume:
76 # Delete the Volume if it was created
77 resp, _ = self.client.delete_volume(volume['id'])
78 self.assertEqual(202, resp.status)
79 self.client.wait_for_resource_deletion(volume['id'])
80
Giulio Fidente8b311902013-05-12 15:40:31 +020081 @attr(type='gate')
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070082 def test_volume_get_metadata_none(self):
Sean Dague72a00382013-01-03 17:53:38 -050083 # Create a volume without passing metadata, get details, and delete
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070084 try:
85 volume = {}
86 v_name = rand_name('Volume-')
87 # Create a volume without metadata
88 resp, volume = self.client.create_volume(size=1,
89 display_name=v_name,
90 metadata={})
91 self.assertEqual(200, resp.status)
92 self.assertTrue('id' in volume)
93 self.assertTrue('display_name' in volume)
94 self.client.wait_for_volume_status(volume['id'], 'available')
95 #GET Volume
96 resp, fetched_volume = self.client.get_volume(volume['id'])
97 self.assertEqual(200, resp.status)
98 self.assertEqual(fetched_volume['metadata'], {})
Matthew Treinish05d9fb92012-12-07 16:14:05 -050099 except Exception:
Rohit Karajgidd47d7e2012-07-31 04:11:01 -0700100 self.fail("Could not get volume metadata")
101 finally:
102 if volume:
103 # Delete the Volume if it was created
104 resp, _ = self.client.delete_volume(volume['id'])
105 self.assertEqual(202, resp.status)
106 self.client.wait_for_resource_deletion(volume['id'])
Matthew Treinish9854d5b2012-09-20 10:22:13 -0400107
Giulio Fidente8b311902013-05-12 15:40:31 +0200108 @attr(type=['smoke', 'gate'])
Giulio Fidente36836c42013-04-05 15:43:51 +0200109 def test_volume_create_get_delete(self):
110 self._volume_create_get_delete(image_ref=None)
111
Giulio Fidente8b311902013-05-12 15:40:31 +0200112 @attr(type=['smoke', 'gate'])
Giulio Fidente36836c42013-04-05 15:43:51 +0200113 def test_volume_from_image(self):
114 self._volume_create_get_delete(image_ref=self.config.compute.image_ref)
115
Matthew Treinish9854d5b2012-09-20 10:22:13 -0400116
Attila Fazekas3dcdae12013-02-14 12:50:04 +0100117class VolumesGetTestXML(VolumesGetTest):
118 _interface = "xml"