blob: 490156bbee3bac5a42f8ae1ee67a5b1d3733409a [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
Jay Pipesf38eaac2012-06-21 13:37:35 -040018import nose
Jay Pipes13b479b2012-06-11 14:52:27 -040019from nose.plugins.attrib import attr
20import unittest2 as unittest
21
Jay Pipesf38eaac2012-06-21 13:37:35 -040022from tempest.common.utils.data_utils import rand_name
Matthew Treinisha83a16e2012-12-07 13:44:02 -050023from tempest import exceptions
Jay Pipesf38eaac2012-06-21 13:37:35 -040024from tempest.tests import compute
Matthew Treinisha83a16e2012-12-07 13:44:02 -050025from tempest.tests.compute.base import BaseComputeTest
Daryl Wallecke36d5002012-03-28 09:56:10 -050026
27
Jay Pipesf38eaac2012-06-21 13:37:35 -040028class TestServerDiskConfig(BaseComputeTest):
David Kranz1b3bf7f2012-04-12 14:39:23 -040029
Daryl Wallecke36d5002012-03-28 09:56:10 -050030 @classmethod
31 def setUpClass(cls):
Jay Pipesf38eaac2012-06-21 13:37:35 -040032 if not compute.DISK_CONFIG_ENABLED:
33 msg = "DiskConfig extension not enabled."
34 raise nose.SkipTest(msg)
35 super(TestServerDiskConfig, cls).setUpClass()
Daryl Wallecke36d5002012-03-28 09:56:10 -050036 cls.client = cls.os.servers_client
Daryl Wallecke36d5002012-03-28 09:56:10 -050037
38 @attr(type='positive')
Daryl Wallecke36d5002012-03-28 09:56:10 -050039 def test_rebuild_server_with_manual_disk_config(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050040 # A server should be rebuilt using the manual disk config option
Daryl Wallecke36d5002012-03-28 09:56:10 -050041 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -050042 resp, server = self.create_server_with_extras(name,
43 self.image_ref,
44 self.flavor_ref,
45 disk_config='AUTO')
Daryl Wallecke36d5002012-03-28 09:56:10 -050046
47 #Wait for the server to become active
48 self.client.wait_for_server_status(server['id'], 'ACTIVE')
49
50 #Verify the specified attributes are set correctly
51 resp, server = self.client.get_server(server['id'])
52 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
53
54 resp, server = self.client.rebuild(server['id'],
55 self.image_ref_alt,
56 disk_config='MANUAL')
57
58 #Wait for the server to become active
59 self.client.wait_for_server_status(server['id'], 'ACTIVE')
60
61 #Verify the specified attributes are set correctly
62 resp, server = self.client.get_server(server['id'])
63 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
64
65 #Delete the server
66 resp, body = self.client.delete_server(server['id'])
67
68 @attr(type='positive')
Daryl Wallecke36d5002012-03-28 09:56:10 -050069 def test_rebuild_server_with_auto_disk_config(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050070 # A server should be rebuilt using the auto disk config option
Daryl Wallecke36d5002012-03-28 09:56:10 -050071 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -050072 resp, server = self.create_server_with_extras(name,
73 self.image_ref,
74 self.flavor_ref,
75 disk_config='MANUAL')
Daryl Wallecke36d5002012-03-28 09:56:10 -050076
77 #Wait for the server to become active
78 self.client.wait_for_server_status(server['id'], 'ACTIVE')
79
80 #Verify the specified attributes are set correctly
81 resp, server = self.client.get_server(server['id'])
82 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
83
84 resp, server = self.client.rebuild(server['id'],
85 self.image_ref_alt,
86 disk_config='AUTO')
87
88 #Wait for the server to become active
89 self.client.wait_for_server_status(server['id'], 'ACTIVE')
90
91 #Verify the specified attributes are set correctly
92 resp, server = self.client.get_server(server['id'])
93 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
94
95 #Delete the server
96 resp, body = self.client.delete_server(server['id'])
97
98 @attr(type='positive')
Jay Pipesf38eaac2012-06-21 13:37:35 -040099 @unittest.skipUnless(compute.RESIZE_AVAILABLE, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500100 def test_resize_server_from_manual_to_auto(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500101 # A server should be resized from manual to auto disk config
Daryl Wallecke36d5002012-03-28 09:56:10 -0500102 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500103 resp, server = self.create_server_with_extras(name,
104 self.image_ref,
105 self.flavor_ref,
106 disk_config='MANUAL')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500107
108 #Wait for the server to become active
109 self.client.wait_for_server_status(server['id'], 'ACTIVE')
110
111 #Resize with auto option
112 self.client.resize(server['id'], self.flavor_ref_alt,
113 disk_config='AUTO')
114 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
115 self.client.confirm_resize(server['id'])
116 self.client.wait_for_server_status(server['id'], 'ACTIVE')
117
118 resp, server = self.client.get_server(server['id'])
119 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
120
121 #Delete the server
122 resp, body = self.client.delete_server(server['id'])
123
124 @attr(type='positive')
Jay Pipesf38eaac2012-06-21 13:37:35 -0400125 @unittest.skipUnless(compute.RESIZE_AVAILABLE, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500126 def test_resize_server_from_auto_to_manual(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500127 # A server should be resized from auto to manual disk config
Daryl Wallecke36d5002012-03-28 09:56:10 -0500128 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500129 resp, server = self.create_server_with_extras(name,
130 self.image_ref,
131 self.flavor_ref,
132 disk_config='AUTO')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500133
134 #Wait for the server to become active
135 self.client.wait_for_server_status(server['id'], 'ACTIVE')
136
137 #Resize with manual option
138 self.client.resize(server['id'], self.flavor_ref_alt,
139 disk_config='MANUAL')
140 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
141 self.client.confirm_resize(server['id'])
142 self.client.wait_for_server_status(server['id'], 'ACTIVE')
143
144 resp, server = self.client.get_server(server['id'])
145 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
146
147 #Delete the server
148 resp, body = self.client.delete_server(server['id'])