blob: 4646ae27b88a5f99509dc8ebe966ad07e908e03e [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# 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.compute import base
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053019from tempest.common.utils.data_utils import rand_name
Chris Yeoh9465b0b2013-02-09 22:19:15 +103020from tempest.test import attr
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053021
22
Attila Fazekas19044d52013-02-16 07:35:06 +010023class VolumesGetTestJSON(base.BaseComputeTest):
24
25 _interface = 'json'
26
27 @classmethod
28 def setUpClass(cls):
29 super(VolumesGetTestJSON, cls).setUpClass()
30 cls.client = cls.volumes_extensions_client
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053031
32 @attr(type='smoke')
33 def test_volume_create_get_delete(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050034 # CREATE, GET, DELETE Volume
Dan Prince9821fde2012-11-30 10:54:12 -050035 volume = None
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053036 try:
James E. Blaire6d8ee12013-01-18 21:33:45 +000037 v_name = rand_name('Volume-%s-') % self._interface
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053038 metadata = {'Type': 'work'}
39 #Create 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('displayName' in volume)
46 self.assertEqual(volume['displayName'], v_name,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080047 "The created volume name is not equal "
48 "to the requested name")
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053049 self.assertTrue(volume['id'] is not None,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080050 "Field volume id is empty or not found.")
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053051 #Wait for Volume status to become ACTIVE
52 self.client.wait_for_volume_status(volume['id'], 'available')
53 #GET Volume
54 resp, fetched_volume = self.client.get_volume(volume['id'])
55 self.assertEqual(200, resp.status)
56 #Verfication of details of fetched Volume
57 self.assertEqual(v_name,
58 fetched_volume['displayName'],
59 'The fetched Volume is different '
60 'from the created Volume')
61 self.assertEqual(volume['id'],
62 fetched_volume['id'],
63 'The fetched Volume is different '
64 'from the created Volume')
65 self.assertEqual(metadata,
66 fetched_volume['metadata'],
67 'The fetched Volume is different '
68 'from the created Volume')
Rohit Karajgidd47d7e2012-07-31 04:11:01 -070069
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053070 finally:
Dan Prince9821fde2012-11-30 10:54:12 -050071 if volume:
72 #Delete the Volume created in this method
73 resp, _ = self.client.delete_volume(volume['id'])
74 self.assertEqual(202, resp.status)
75 #Checking if the deleted Volume still exists
76 self.client.wait_for_resource_deletion(volume['id'])
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053077
78 @attr(type='positive')
79 def test_volume_get_metadata_none(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050080 # CREATE, GET empty metadata dict
rajalakshmi-ganesand3b43f62012-04-03 17:39:23 +053081 try:
82 v_name = rand_name('Volume-')
83 #Create volume
84 resp, volume = self.client.create_volume(size=1,
85 display_name=v_name,
86 metadata={})
87 self.assertEqual(200, resp.status)
88 self.assertTrue('id' in volume)
89 self.assertTrue('displayName' in volume)
90 #Wait for Volume status to become ACTIVE
91 self.client.wait_for_volume_status(volume['id'], 'available')
92 #GET Volume
93 resp, fetched_volume = self.client.get_volume(volume['id'])
94 self.assertEqual(200, resp.status)
95 self.assertEqual(fetched_volume['metadata'], {})
96 finally:
97 #Delete the Volume created in this method
98 resp, _ = self.client.delete_volume(volume['id'])
99 self.assertEqual(202, resp.status)
Matthew Treinish9e1eb972012-08-17 17:53:41 -0400100 #Checking if the deleted Volume still exists
101 self.client.wait_for_resource_deletion(volume['id'])
102
103
Attila Fazekas19044d52013-02-16 07:35:06 +0100104class VolumesGetTestXML(VolumesGetTestJSON):
105 _interface = "xml"