blob: c6e000cdb2cb02edc693f8a942433d02255d743d [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
ZhiQiang Fan39f97222013-09-20 04:49:44 +08003# Copyright 2012 OpenStack Foundation
Jay Pipes13b479b2012-06-11 14:52:27 -04004# 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
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +090018import base64
Rohit Karajgidc300b22012-05-04 08:11:00 -070019import sys
LingxianKongb2ca96f2013-09-28 23:09:30 +080020import uuid
Jay Pipes13b479b2012-06-11 14:52:27 -040021
Sean Dague1937d092013-05-17 16:36:38 -040022from tempest.api.compute import base
Matthew Treinish481466b2012-12-20 17:16:01 -050023from tempest import clients
Matthew Treinisha83a16e2012-12-07 13:44:02 -050024from tempest.common.utils.data_utils import rand_name
Daryl Wallecked8bef32011-12-05 23:02:08 -060025from tempest import exceptions
Chris Yeoh9465b0b2013-02-09 22:19:15 +103026from tempest.test import attr
Daryl Walleckadea1fa2011-11-15 18:36:39 -060027
28
ivan-zhuf2b00502013-10-18 10:06:52 +080029class ServersNegativeTestJSON(base.BaseV2ComputeTest):
donald-ngo18edb812013-02-22 11:37:15 -080030 _interface = 'json'
Daryl Walleckadea1fa2011-11-15 18:36:39 -060031
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090032 def setUp(self):
33 super(ServersNegativeTestJSON, self).setUp()
34 try:
35 self.client.wait_for_server_status(self.server_id, 'ACTIVE')
36 except Exception:
37 self.rebuild_server()
38
Daryl Walleckadea1fa2011-11-15 18:36:39 -060039 @classmethod
40 def setUpClass(cls):
Xiao Hanyuab61c072013-06-26 15:33:42 +080041 super(ServersNegativeTestJSON, cls).setUpClass()
Daryl Walleckc7251962012-03-12 17:26:54 -050042 cls.client = cls.servers_client
Rohit Karajgidc300b22012-05-04 08:11:00 -070043 cls.img_client = cls.images_client
Matthew Treinish481466b2012-12-20 17:16:01 -050044 cls.alt_os = clients.AltManager()
Rohit Karajgidc300b22012-05-04 08:11:00 -070045 cls.alt_client = cls.alt_os.servers_client
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090046 resp, server = cls.create_server(wait_until='ACTIVE')
47 cls.server_id = server['id']
Daryl Walleckadea1fa2011-11-15 18:36:39 -060048
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040049 @attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060050 def test_server_name_blank(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050051 # Create a server with name parameter empty
donald-ngo18edb812013-02-22 11:37:15 -080052
53 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -050054 self.create_server,
55 name='')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060056
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040057 @attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060058 def test_personality_file_contents_not_encoded(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050059 # Use an unencoded file when creating a server with personality
donald-ngo18edb812013-02-22 11:37:15 -080060
Daryl Walleckadea1fa2011-11-15 18:36:39 -060061 file_contents = 'This is a test file.'
Sean Dague9b669e32012-12-13 18:40:08 -050062 person = [{'path': '/etc/testfile.txt',
63 'contents': file_contents}]
Daryl Walleckadea1fa2011-11-15 18:36:39 -060064
donald-ngo18edb812013-02-22 11:37:15 -080065 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -050066 self.create_server,
donald-ngo18edb812013-02-22 11:37:15 -080067 personality=person)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060068
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040069 @attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060070 def test_create_with_invalid_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050071 # Create a server with an unknown image
donald-ngo18edb812013-02-22 11:37:15 -080072
73 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -050074 self.create_server,
75 image_id=-1)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060076
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040077 @attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060078 def test_create_with_invalid_flavor(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050079 # Create a server with an unknown flavor
donald-ngo18edb812013-02-22 11:37:15 -080080
81 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -050082 self.create_server,
83 flavor=-1,)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060084
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040085 @attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060086 def test_invalid_access_ip_v4_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050087 # An access IPv4 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080088
Sean Dague9b669e32012-12-13 18:40:08 -050089 IPv4 = '1.1.1.1.1.1'
donald-ngo18edb812013-02-22 11:37:15 -080090 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -050091 self.create_server, accessIPv4=IPv4)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060092
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040093 @attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060094 def test_invalid_ip_v6_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050095 # An access IPv6 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080096
Sean Dague9b669e32012-12-13 18:40:08 -050097 IPv6 = 'notvalid'
donald-ngo18edb812013-02-22 11:37:15 -080098
99 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -0500100 self.create_server, accessIPv6=IPv6)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000101
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400102 @attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900103 def test_resize_server_with_non_existent_flavor(self):
104 # Resize a server with non-existent flavor
105 nonexistent_flavor = str(uuid.uuid4())
106 self.assertRaises(exceptions.BadRequest, self.client.resize,
107 self.server_id, flavor_ref=nonexistent_flavor)
108
109 @attr(type=['negative', 'gate'])
110 def test_resize_server_with_null_flavor(self):
111 # Resize a server with null flavor
112 self.assertRaises(exceptions.BadRequest, self.client.resize,
113 self.server_id, flavor_ref="")
114
115 @attr(type=['negative', 'gate'])
116 def test_reboot_non_existent_server(self):
117 # Reboot a non existent server
118 nonexistent_server = str(uuid.uuid4())
119 self.assertRaises(exceptions.NotFound, self.client.reboot,
120 nonexistent_server, 'SOFT')
121
122 @attr(type=['negative', 'gate'])
Anju Tiwari8c789762013-07-22 11:02:05 +0530123 def test_pause_paused_server(self):
124 # Pause a paused server.
Anju Tiwari8c789762013-07-22 11:02:05 +0530125 self.client.pause_server(self.server_id)
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200126 self.addCleanup(self.client.unpause_server,
127 self.server_id)
Anju Tiwari8c789762013-07-22 11:02:05 +0530128 self.client.wait_for_server_status(self.server_id, 'PAUSED')
Anju5c3e510c2013-10-18 06:40:29 +0530129 self.assertRaises(exceptions.Conflict,
Anju Tiwari8c789762013-07-22 11:02:05 +0530130 self.client.pause_server,
131 self.server_id)
132
133 @attr(type=['negative', 'gate'])
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200134 def test_rebuild_reboot_deleted_server(self):
135 # Rebuild and Reboot a deleted server
136 _, server = self.create_server()
137 self.client.delete_server(server['id'])
138 self.client.wait_for_server_termination(server['id'])
donald-ngo18edb812013-02-22 11:37:15 -0800139
140 self.assertRaises(exceptions.NotFound,
141 self.client.rebuild,
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200142 server['id'], self.image_ref_alt)
143 self.assertRaises(exceptions.NotFound, self.client.reboot,
144 server['id'], 'SOFT')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700145
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400146 @attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900147 def test_rebuild_non_existent_server(self):
148 # Rebuild a non existent server
149 nonexistent_server = str(uuid.uuid4())
150 meta = {'rebuild': 'server'}
151 new_name = rand_name('server')
152 file_contents = 'Test server rebuild.'
153 personality = [{'path': '/etc/rebuild.txt',
154 'contents': base64.b64encode(file_contents)}]
155 self.assertRaises(exceptions.NotFound,
156 self.client.rebuild,
157 nonexistent_server,
158 self.image_ref_alt,
159 name=new_name, meta=meta,
160 personality=personality,
161 adminPass='rebuild')
162
163 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700164 def test_create_numeric_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500165 # Create a server with a numeric name
Sean Daguee623f752013-02-27 14:52:15 -0500166 if self.__class__._interface == "xml":
167 raise self.skipException("Not testable in XML")
Rohit Karajgidc300b22012-05-04 08:11:00 -0700168
169 server_name = 12345
Sean Dague9b669e32012-12-13 18:40:08 -0500170 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -0500171 self.create_server,
172 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700173
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400174 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700175 def test_create_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500176 # Create a server with name length exceeding 256 characters
Rohit Karajgidc300b22012-05-04 08:11:00 -0700177
178 server_name = 'a' * 256
Sean Dague9b669e32012-12-13 18:40:08 -0500179 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -0500180 self.create_server,
181 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700182
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400183 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700184 def test_create_with_invalid_network_uuid(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500185 # Pass invalid network uuid while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700186
Chris Yeohfc9e3332013-01-21 09:28:13 +1030187 networks = [{'fixed_ip': '10.0.1.1', 'uuid': 'a-b-c-d-e-f-g-h-i-j'}]
Rohit Karajgidc300b22012-05-04 08:11:00 -0700188
Sean Dague9b669e32012-12-13 18:40:08 -0500189 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -0500190 self.create_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800191 networks=networks)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700192
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400193 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700194 def test_create_with_non_existant_keypair(self):
Chang Bo Guof099f802013-09-13 19:01:46 -0700195 # Pass a non-existent keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700196
197 key_name = rand_name('key')
Sean Dague9b669e32012-12-13 18:40:08 -0500198 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -0500199 self.create_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800200 key_name=key_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700201
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400202 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700203 def test_create_server_metadata_exceeds_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500204 # Pass really long metadata while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700205
Rohit Karajgidc300b22012-05-04 08:11:00 -0700206 metadata = {'a': 'b' * 260}
Sean Dague9b669e32012-12-13 18:40:08 -0500207 self.assertRaises(exceptions.OverLimit,
Sean Dague22897e12013-02-25 17:54:09 -0500208 self.create_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800209 meta=metadata)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700210
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400211 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700212 def test_update_name_of_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500213 # Update name of a non-existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700214
215 server_name = rand_name('server')
216 new_name = rand_name('server') + '_updated'
217
218 self.assertRaises(exceptions.NotFound, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800219 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700220
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400221 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700222 def test_update_server_set_empty_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500223 # Update name of the server to an empty string
Rohit Karajgidc300b22012-05-04 08:11:00 -0700224
225 server_name = rand_name('server')
226 new_name = ''
227
228 self.assertRaises(exceptions.BadRequest, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800229 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700230
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400231 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700232 def test_update_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500233 # Update name of a server that belongs to another tenant
Rohit Karajgidc300b22012-05-04 08:11:00 -0700234
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900235 new_name = self.server_id + '_new'
Rohit Karajgidc300b22012-05-04 08:11:00 -0700236 self.assertRaises(exceptions.NotFound,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900237 self.alt_client.update_server, self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800238 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700239
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400240 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700241 def test_update_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500242 # Update name of server exceed the name length limit
Rohit Karajgidc300b22012-05-04 08:11:00 -0700243
Rohit Karajgidc300b22012-05-04 08:11:00 -0700244 new_name = 'a' * 256
245 self.assertRaises(exceptions.BadRequest,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800246 self.client.update_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900247 self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800248 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700249
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400250 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700251 def test_delete_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500252 # Delete a non existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700253
254 self.assertRaises(exceptions.NotFound, self.client.delete_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800255 '999erra43')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700256
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400257 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700258 def test_delete_a_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500259 # Delete a server that belongs to another tenant
Matthew Treinish38c4dc42013-07-30 14:30:07 -0400260 self.assertRaises(exceptions.NotFound,
261 self.alt_client.delete_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900262 self.server_id)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700263
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400264 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700265 def test_delete_server_pass_negative_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500266 # Pass an invalid string parameter to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700267
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800268 self.assertRaises(exceptions.NotFound, self.client.delete_server, -1)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700269
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400270 @attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700271 def test_delete_server_pass_id_exceeding_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500272 # Pass a server ID that exceeds length limit to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700273
274 self.assertRaises(exceptions.NotFound, self.client.delete_server,
275 sys.maxint + 1)
donald-ngo78bd7f52013-02-08 14:35:16 -0800276
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400277 @attr(type=['negative', 'gate'])
donald-ngo78bd7f52013-02-08 14:35:16 -0800278 def test_create_with_nonexistent_security_group(self):
279 # Create a server with a nonexistent security group
donald-ngo18edb812013-02-22 11:37:15 -0800280
281 security_groups = [{'name': 'does_not_exist'}]
Jordan Pittierce89f632013-06-25 16:04:39 +0000282 self.assertRaises(exceptions.BadRequest,
Sean Dague22897e12013-02-25 17:54:09 -0500283 self.create_server,
donald-ngo18edb812013-02-22 11:37:15 -0800284 security_groups=security_groups)
hi2suresh063acbc2013-02-20 09:32:03 +0000285
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400286 @attr(type=['negative', 'gate'])
hi2suresh063acbc2013-02-20 09:32:03 +0000287 def test_get_non_existent_server(self):
288 # Get a non existent server details
donald-ngo18edb812013-02-22 11:37:15 -0800289
hi2suresh063acbc2013-02-20 09:32:03 +0000290 self.assertRaises(exceptions.NotFound, self.client.get_server,
291 '999erra43')
Sean Daguee623f752013-02-27 14:52:15 -0500292
Anju Tiwari6c336162013-08-08 12:21:02 +0530293 @attr(type=['negative', 'gate'])
294 def test_stop_non_existent_server(self):
295 # Stop a non existent server
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900296 nonexistent_server = str(uuid.uuid4())
Anju Tiwari6c336162013-08-08 12:21:02 +0530297 self.assertRaises(exceptions.NotFound, self.servers_client.stop,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900298 nonexistent_server)
Anju Tiwari6c336162013-08-08 12:21:02 +0530299
300 @attr(type=['negative', 'gate'])
301 def test_pause_non_existent_server(self):
302 # pause a non existent server
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900303 nonexistent_server = str(uuid.uuid4())
Anju Tiwari6c336162013-08-08 12:21:02 +0530304 self.assertRaises(exceptions.NotFound, self.client.pause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900305 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800306
307 @attr(type=['negative', 'gate'])
308 def test_unpause_non_existent_server(self):
309 # unpause a non existent server
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900310 nonexistent_server = str(uuid.uuid4())
LingxianKongb2ca96f2013-09-28 23:09:30 +0800311 self.assertRaises(exceptions.NotFound, self.client.unpause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900312 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800313
314 @attr(type=['negative', 'gate'])
315 def test_unpause_server_invalid_state(self):
316 # unpause an active server.
Anju5c3e510c2013-10-18 06:40:29 +0530317 self.assertRaises(exceptions.Conflict,
LingxianKongb2ca96f2013-09-28 23:09:30 +0800318 self.client.unpause_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900319 self.server_id)
Anju Tiwari6c336162013-08-08 12:21:02 +0530320
LingxianKong691a5702013-09-29 11:43:45 +0800321 @attr(type=['negative', 'gate'])
322 def test_suspend_non_existent_server(self):
323 # suspend a non existent server
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900324 nonexistent_server = str(uuid.uuid4())
LingxianKong691a5702013-09-29 11:43:45 +0800325 self.assertRaises(exceptions.NotFound, self.client.suspend_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900326 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800327
328 @attr(type=['negative', 'gate'])
329 def test_suspend_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800330 # suspend a suspended server.
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900331 resp, _ = self.client.suspend_server(self.server_id)
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200332 self.addCleanup(self.client.resume_server,
333 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800334 self.assertEqual(202, resp.status)
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900335 self.client.wait_for_server_status(self.server_id, 'SUSPENDED')
Anju5c3e510c2013-10-18 06:40:29 +0530336 self.assertRaises(exceptions.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800337 self.client.suspend_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900338 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800339
340 @attr(type=['negative', 'gate'])
341 def test_resume_non_existent_server(self):
342 # resume a non existent server
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900343 nonexistent_server = str(uuid.uuid4())
LingxianKong691a5702013-09-29 11:43:45 +0800344 self.assertRaises(exceptions.NotFound, self.client.resume_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900345 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800346
347 @attr(type=['negative', 'gate'])
348 def test_resume_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800349 # resume an active server.
Anju5c3e510c2013-10-18 06:40:29 +0530350 self.assertRaises(exceptions.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800351 self.client.resume_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900352 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800353
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900354 @attr(type=['negative', 'gate'])
355 def test_get_console_output_of_non_existent_server(self):
356 # get the console output for a non existent server
357 nonexistent_server = str(uuid.uuid4())
358 self.assertRaises(exceptions.NotFound,
359 self.client.get_console_output,
360 nonexistent_server, 10)
361
Lingxian Kongaecc1092013-10-03 16:18:46 +0800362 @attr(type=['negative', 'gate'])
363 def test_force_delete_nonexistent_server_id(self):
364 non_existent_server_id = str(uuid.uuid4())
365
366 self.assertRaises(exceptions.NotFound,
367 self.client.force_delete_server,
368 non_existent_server_id)
369
370 @attr(type=['negative', 'gate'])
371 def test_force_delete_server_invalid_state(self):
372 # we can only force-delete a server in 'soft-delete' state
373 self.assertRaises(exceptions.Conflict,
374 self.client.force_delete_server,
375 self.server_id)
376
377 @attr(type=['negative', 'gate'])
378 def test_restore_nonexistent_server_id(self):
379 non_existent_server_id = str(uuid.uuid4())
380
381 self.assertRaises(exceptions.NotFound,
382 self.client.restore_soft_deleted_server,
383 non_existent_server_id)
384
385 @attr(type=['negative', 'gate'])
386 def test_restore_server_invalid_state(self):
387 # we can only restore-delete a server in 'soft-delete' state
388 self.assertRaises(exceptions.Conflict,
389 self.client.restore_soft_deleted_server,
390 self.server_id)
391
Sean Daguee623f752013-02-27 14:52:15 -0500392
Xiao Hanyuab61c072013-06-26 15:33:42 +0800393class ServersNegativeTestXML(ServersNegativeTestJSON):
Sean Daguee623f752013-02-27 14:52:15 -0500394 _interface = 'xml'