blob: 2e90f161c6e1e9a23cded8d047f79cd8dbde2440 [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
Matt Riedemannbc8dbd32013-08-02 14:02:12 -070031 def _delete_volume(self, volume_id):
32 resp, _ = self.client.delete_volume(volume_id)
33 self.assertEqual(202, resp.status)
34 self.client.wait_for_resource_deletion(volume_id)
35
Giulio Fidente02f42982013-06-17 16:25:56 +020036 def _volume_create_get_delete(self, **kwargs):
Sean Dague72a00382013-01-03 17:53:38 -050037 # Create a volume, Get it's details and Delete the volume
Matt Riedemannbc8dbd32013-08-02 14:02:12 -070038 volume = {}
39 v_name = rand_name('Volume')
40 metadata = {'Type': 'Test'}
41 # Create a volume
42 resp, volume = self.client.create_volume(size=1,
43 display_name=v_name,
44 metadata=metadata,
45 **kwargs)
46 self.assertEqual(200, resp.status)
47 self.assertIn('id', volume)
48 self.addCleanup(self._delete_volume, volume['id'])
49 self.assertIn('display_name', volume)
50 self.assertEqual(volume['display_name'], v_name,
51 "The created volume name is not equal "
52 "to the requested name")
53 self.assertTrue(volume['id'] is not None,
54 "Field volume id is empty or not found.")
55 self.client.wait_for_volume_status(volume['id'], 'available')
56 # Get Volume information
57 resp, fetched_volume = self.client.get_volume(volume['id'])
58 self.assertEqual(200, resp.status)
59 self.assertEqual(v_name,
60 fetched_volume['display_name'],
61 'The fetched Volume is different '
62 'from the created Volume')
63 self.assertEqual(volume['id'],
64 fetched_volume['id'],
65 'The fetched Volume is different '
66 'from the created Volume')
67 self.assertEqual(metadata,
68 fetched_volume['metadata'],
69 'The fetched Volume is different '
70 'from the created Volume')
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070071
Giulio Fidente8b311902013-05-12 15:40:31 +020072 @attr(type='gate')
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070073 def test_volume_get_metadata_none(self):
Sean Dague72a00382013-01-03 17:53:38 -050074 # Create a volume without passing metadata, get details, and delete
Matt Riedemannbc8dbd32013-08-02 14:02:12 -070075 volume = {}
76 v_name = rand_name('Volume-')
77 # Create a volume without metadata
78 resp, volume = self.client.create_volume(size=1,
79 display_name=v_name,
80 metadata={})
81 self.assertEqual(200, resp.status)
82 self.assertIn('id', volume)
83 self.addCleanup(self._delete_volume, volume['id'])
84 self.assertIn('display_name', volume)
85 self.client.wait_for_volume_status(volume['id'], 'available')
86 # GET Volume
87 resp, fetched_volume = self.client.get_volume(volume['id'])
88 self.assertEqual(200, resp.status)
89 self.assertEqual(fetched_volume['metadata'], {})
Matthew Treinish9854d5b2012-09-20 10:22:13 -040090
Giulio Fidenteba3985a2013-05-29 01:46:36 +020091 @attr(type='smoke')
Giulio Fidente36836c42013-04-05 15:43:51 +020092 def test_volume_create_get_delete(self):
Giulio Fidente02f42982013-06-17 16:25:56 +020093 self._volume_create_get_delete()
Giulio Fidente36836c42013-04-05 15:43:51 +020094
Giulio Fidenteba3985a2013-05-29 01:46:36 +020095 @attr(type='smoke')
Giulio Fidente02f42982013-06-17 16:25:56 +020096 def test_volume_create_get_delete_from_image(self):
97 self._volume_create_get_delete(imageRef=self.config.compute.image_ref)
98
99 @attr(type='gate')
100 def test_volume_create_get_delete_as_clone(self):
101 origin = self.create_volume(size=1,
102 display_name="Volume Origin")
103 self._volume_create_get_delete(source_volid=origin['id'])
Giulio Fidente36836c42013-04-05 15:43:51 +0200104
Matthew Treinish9854d5b2012-09-20 10:22:13 -0400105
Attila Fazekas3dcdae12013-02-14 12:50:04 +0100106class VolumesGetTestXML(VolumesGetTest):
107 _interface = "xml"