blob: 64fb7d3cf2036ca9efda88ee5d4784613d630620 [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
Sean Dague1937d092013-05-17 16:36:38 -040020from tempest.api import compute
21from tempest.api.compute import base
Chris Yeoh9465b0b2013-02-09 22:19:15 +103022from tempest.test import attr
Daryl Wallecke36d5002012-03-28 09:56:10 -050023
24
ivan-zhua5141d92013-03-06 23:12:43 +080025class ServerDiskConfigTestJSON(base.BaseComputeTest):
Attila Fazekas19044d52013-02-16 07:35:06 +010026 _interface = 'json'
David Kranz1b3bf7f2012-04-12 14:39:23 -040027
Daryl Wallecke36d5002012-03-28 09:56:10 -050028 @classmethod
29 def setUpClass(cls):
Jay Pipesf38eaac2012-06-21 13:37:35 -040030 if not compute.DISK_CONFIG_ENABLED:
31 msg = "DiskConfig extension not enabled."
ivan-zhu1feeb382013-01-24 10:14:39 +080032 raise cls.skipException(msg)
ivan-zhua5141d92013-03-06 23:12:43 +080033 super(ServerDiskConfigTestJSON, cls).setUpClass()
Daryl Wallecke36d5002012-03-28 09:56:10 -050034 cls.client = cls.os.servers_client
Daryl Wallecke36d5002012-03-28 09:56:10 -050035
36 @attr(type='positive')
Daryl Wallecke36d5002012-03-28 09:56:10 -050037 def test_rebuild_server_with_manual_disk_config(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050038 # A server should be rebuilt using the manual disk config option
Sean Dague22897e12013-02-25 17:54:09 -050039 resp, server = self.create_server(disk_config='AUTO',
40 wait_until='ACTIVE')
Daryl Wallecke36d5002012-03-28 09:56:10 -050041
42 #Verify the specified attributes are set correctly
43 resp, server = self.client.get_server(server['id'])
44 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
45
46 resp, server = self.client.rebuild(server['id'],
47 self.image_ref_alt,
48 disk_config='MANUAL')
49
50 #Wait for the server to become active
51 self.client.wait_for_server_status(server['id'], 'ACTIVE')
52
53 #Verify the specified attributes are set correctly
54 resp, server = self.client.get_server(server['id'])
55 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
56
57 #Delete the server
58 resp, body = self.client.delete_server(server['id'])
59
60 @attr(type='positive')
Daryl Wallecke36d5002012-03-28 09:56:10 -050061 def test_rebuild_server_with_auto_disk_config(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050062 # A server should be rebuilt using the auto disk config option
Sean Dague22897e12013-02-25 17:54:09 -050063 resp, server = self.create_server(disk_config='MANUAL',
64 wait_until='ACTIVE')
Daryl Wallecke36d5002012-03-28 09:56:10 -050065
66 #Verify the specified attributes are set correctly
67 resp, server = self.client.get_server(server['id'])
68 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
69
70 resp, server = self.client.rebuild(server['id'],
71 self.image_ref_alt,
72 disk_config='AUTO')
73
74 #Wait for the server to become active
75 self.client.wait_for_server_status(server['id'], 'ACTIVE')
76
77 #Verify the specified attributes are set correctly
78 resp, server = self.client.get_server(server['id'])
79 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
80
81 #Delete the server
82 resp, body = self.client.delete_server(server['id'])
83
84 @attr(type='positive')
ivan-zhu1feeb382013-01-24 10:14:39 +080085 @testtools.skipUnless(compute.RESIZE_AVAILABLE, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -050086 def test_resize_server_from_manual_to_auto(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050087 # A server should be resized from manual to auto disk config
Sean Dague22897e12013-02-25 17:54:09 -050088 resp, server = self.create_server(disk_config='MANUAL',
89 wait_until='ACTIVE')
Daryl Wallecke36d5002012-03-28 09:56:10 -050090
91 #Resize with auto option
92 self.client.resize(server['id'], self.flavor_ref_alt,
93 disk_config='AUTO')
94 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
95 self.client.confirm_resize(server['id'])
96 self.client.wait_for_server_status(server['id'], 'ACTIVE')
97
98 resp, server = self.client.get_server(server['id'])
99 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
100
101 #Delete the server
102 resp, body = self.client.delete_server(server['id'])
103
104 @attr(type='positive')
ivan-zhu1feeb382013-01-24 10:14:39 +0800105 @testtools.skipUnless(compute.RESIZE_AVAILABLE, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500106 def test_resize_server_from_auto_to_manual(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500107 # A server should be resized from auto to manual disk config
Sean Dague22897e12013-02-25 17:54:09 -0500108 resp, server = self.create_server(disk_config='AUTO',
109 wait_until='ACTIVE')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500110
111 #Resize with manual option
112 self.client.resize(server['id'], self.flavor_ref_alt,
113 disk_config='MANUAL')
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('MANUAL', server['OS-DCF:diskConfig'])
120
121 #Delete the server
122 resp, body = self.client.delete_server(server['id'])
ivan-zhua5141d92013-03-06 23:12:43 +0800123
124
125class ServerDiskConfigTestXML(ServerDiskConfigTestJSON):
126 _interface = 'xml'