blob: 671abf9e8d16191b4af09726d9f36dd16ec5159c [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
ivan-zhu1feeb382013-01-24 10:14:39 +080018import testtools
Jay Pipes13b479b2012-06-11 14:52:27 -040019
Jay Pipesf38eaac2012-06-21 13:37:35 -040020from tempest.common.utils.data_utils import rand_name
Chris Yeoh9465b0b2013-02-09 22:19:15 +103021from tempest.test import attr
Jay Pipesf38eaac2012-06-21 13:37:35 -040022from tempest.tests import compute
Attila Fazekas19044d52013-02-16 07:35:06 +010023from tempest.tests.compute import base
Daryl Wallecke36d5002012-03-28 09:56:10 -050024
25
Attila Fazekas19044d52013-02-16 07:35:06 +010026class TestServerDiskConfig(base.BaseComputeTest):
27 _interface = 'json'
David Kranz1b3bf7f2012-04-12 14:39:23 -040028
Daryl Wallecke36d5002012-03-28 09:56:10 -050029 @classmethod
30 def setUpClass(cls):
Jay Pipesf38eaac2012-06-21 13:37:35 -040031 if not compute.DISK_CONFIG_ENABLED:
32 msg = "DiskConfig extension not enabled."
ivan-zhu1feeb382013-01-24 10:14:39 +080033 raise cls.skipException(msg)
Jay Pipesf38eaac2012-06-21 13:37:35 -040034 super(TestServerDiskConfig, cls).setUpClass()
Daryl Wallecke36d5002012-03-28 09:56:10 -050035 cls.client = cls.os.servers_client
Daryl Wallecke36d5002012-03-28 09:56:10 -050036
37 @attr(type='positive')
Daryl Wallecke36d5002012-03-28 09:56:10 -050038 def test_rebuild_server_with_manual_disk_config(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050039 # A server should be rebuilt using the manual disk config option
Daryl Wallecke36d5002012-03-28 09:56:10 -050040 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -050041 resp, server = self.create_server_with_extras(name,
42 self.image_ref,
43 self.flavor_ref,
44 disk_config='AUTO')
Daryl Wallecke36d5002012-03-28 09:56:10 -050045
46 #Wait for the server to become active
47 self.client.wait_for_server_status(server['id'], 'ACTIVE')
48
49 #Verify the specified attributes are set correctly
50 resp, server = self.client.get_server(server['id'])
51 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
52
53 resp, server = self.client.rebuild(server['id'],
54 self.image_ref_alt,
55 disk_config='MANUAL')
56
57 #Wait for the server to become active
58 self.client.wait_for_server_status(server['id'], 'ACTIVE')
59
60 #Verify the specified attributes are set correctly
61 resp, server = self.client.get_server(server['id'])
62 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
63
64 #Delete the server
65 resp, body = self.client.delete_server(server['id'])
66
67 @attr(type='positive')
Daryl Wallecke36d5002012-03-28 09:56:10 -050068 def test_rebuild_server_with_auto_disk_config(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050069 # A server should be rebuilt using the auto disk config option
Daryl Wallecke36d5002012-03-28 09:56:10 -050070 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -050071 resp, server = self.create_server_with_extras(name,
72 self.image_ref,
73 self.flavor_ref,
74 disk_config='MANUAL')
Daryl Wallecke36d5002012-03-28 09:56:10 -050075
76 #Wait for the server to become active
77 self.client.wait_for_server_status(server['id'], 'ACTIVE')
78
79 #Verify the specified attributes are set correctly
80 resp, server = self.client.get_server(server['id'])
81 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
82
83 resp, server = self.client.rebuild(server['id'],
84 self.image_ref_alt,
85 disk_config='AUTO')
86
87 #Wait for the server to become active
88 self.client.wait_for_server_status(server['id'], 'ACTIVE')
89
90 #Verify the specified attributes are set correctly
91 resp, server = self.client.get_server(server['id'])
92 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
93
94 #Delete the server
95 resp, body = self.client.delete_server(server['id'])
96
97 @attr(type='positive')
ivan-zhu1feeb382013-01-24 10:14:39 +080098 @testtools.skipUnless(compute.RESIZE_AVAILABLE, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -050099 def test_resize_server_from_manual_to_auto(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500100 # A server should be resized from manual to auto disk config
Daryl Wallecke36d5002012-03-28 09:56:10 -0500101 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500102 resp, server = self.create_server_with_extras(name,
103 self.image_ref,
104 self.flavor_ref,
105 disk_config='MANUAL')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500106
107 #Wait for the server to become active
108 self.client.wait_for_server_status(server['id'], 'ACTIVE')
109
110 #Resize with auto option
111 self.client.resize(server['id'], self.flavor_ref_alt,
112 disk_config='AUTO')
113 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
114 self.client.confirm_resize(server['id'])
115 self.client.wait_for_server_status(server['id'], 'ACTIVE')
116
117 resp, server = self.client.get_server(server['id'])
118 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
119
120 #Delete the server
121 resp, body = self.client.delete_server(server['id'])
122
123 @attr(type='positive')
ivan-zhu1feeb382013-01-24 10:14:39 +0800124 @testtools.skipUnless(compute.RESIZE_AVAILABLE, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500125 def test_resize_server_from_auto_to_manual(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500126 # A server should be resized from auto to manual disk config
Daryl Wallecke36d5002012-03-28 09:56:10 -0500127 name = rand_name('server')
Sean Dague9b669e32012-12-13 18:40:08 -0500128 resp, server = self.create_server_with_extras(name,
129 self.image_ref,
130 self.flavor_ref,
131 disk_config='AUTO')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500132
133 #Wait for the server to become active
134 self.client.wait_for_server_status(server['id'], 'ACTIVE')
135
136 #Resize with manual option
137 self.client.resize(server['id'], self.flavor_ref_alt,
138 disk_config='MANUAL')
139 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
140 self.client.confirm_resize(server['id'])
141 self.client.wait_for_server_status(server['id'], 'ACTIVE')
142
143 resp, server = self.client.get_server(server['id'])
144 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
145
146 #Delete the server
147 resp, body = self.client.delete_server(server['id'])