blob: e0181b93186e662f3b779979ac59959a6e81ddf1 [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
Jay Pipes13b479b2012-06-11 14:52:27 -04002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +090016import base64
Rohit Karajgidc300b22012-05-04 08:11:00 -070017import sys
Jay Pipes13b479b2012-06-11 14:52:27 -040018
Sean Dague1937d092013-05-17 16:36:38 -040019from tempest.api.compute import base
Matthew Treinish481466b2012-12-20 17:16:01 -050020from tempest import clients
Masayuki Igawa259c1132013-10-31 17:48:44 +090021from tempest.common.utils import data_utils
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000022from tempest import config
Daryl Wallecked8bef32011-12-05 23:02:08 -060023from tempest import exceptions
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090024from tempest import test
Daryl Walleckadea1fa2011-11-15 18:36:39 -060025
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000026CONF = config.CONF
27
Daryl Walleckadea1fa2011-11-15 18:36:39 -060028
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:
Ken'ichi Ohmichi122cdf52013-12-11 21:32:25 +090037 self.__class__.server_id = self.rebuild_server(self.server_id)
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090038
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
Matthew Treinish481466b2012-12-20 17:16:01 -050043 cls.alt_os = clients.AltManager()
Rohit Karajgidc300b22012-05-04 08:11:00 -070044 cls.alt_client = cls.alt_os.servers_client
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090045 resp, server = cls.create_test_server(wait_until='ACTIVE')
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090046 cls.server_id = server['id']
Daryl Walleckadea1fa2011-11-15 18:36:39 -060047
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090048 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060049 def test_server_name_blank(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050050 # Create a server with name parameter empty
donald-ngo18edb812013-02-22 11:37:15 -080051
52 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090053 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050054 name='')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060055
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090056 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060057 def test_personality_file_contents_not_encoded(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050058 # Use an unencoded file when creating a server with personality
donald-ngo18edb812013-02-22 11:37:15 -080059
Daryl Walleckadea1fa2011-11-15 18:36:39 -060060 file_contents = 'This is a test file.'
Sean Dague9b669e32012-12-13 18:40:08 -050061 person = [{'path': '/etc/testfile.txt',
62 'contents': file_contents}]
Daryl Walleckadea1fa2011-11-15 18:36:39 -060063
donald-ngo18edb812013-02-22 11:37:15 -080064 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090065 self.create_test_server,
donald-ngo18edb812013-02-22 11:37:15 -080066 personality=person)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060067
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090068 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060069 def test_create_with_invalid_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050070 # Create a server with an unknown image
donald-ngo18edb812013-02-22 11:37:15 -080071
72 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090073 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050074 image_id=-1)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060075
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090076 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060077 def test_create_with_invalid_flavor(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050078 # Create a server with an unknown flavor
donald-ngo18edb812013-02-22 11:37:15 -080079
80 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090081 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050082 flavor=-1,)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060083
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090084 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060085 def test_invalid_access_ip_v4_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050086 # An access IPv4 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080087
Sean Dague9b669e32012-12-13 18:40:08 -050088 IPv4 = '1.1.1.1.1.1'
donald-ngo18edb812013-02-22 11:37:15 -080089 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090090 self.create_test_server, accessIPv4=IPv4)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060091
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090092 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060093 def test_invalid_ip_v6_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050094 # An access IPv6 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080095
Sean Dague9b669e32012-12-13 18:40:08 -050096 IPv6 = 'notvalid'
donald-ngo18edb812013-02-22 11:37:15 -080097
98 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090099 self.create_test_server, accessIPv6=IPv6)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000100
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900101 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V Sf49bf182013-10-21 10:19:43 +0530102 def test_resize_nonexistent_server(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900103 # Resize a non-existent server
104 nonexistent_server = data_utils.rand_uuid()
Hoisaleshwara Madan V Sf49bf182013-10-21 10:19:43 +0530105 self.assertRaises(exceptions.NotFound,
106 self.client.resize,
107 nonexistent_server, self.flavor_ref)
108
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900109 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900110 def test_resize_server_with_non_existent_flavor(self):
111 # Resize a server with non-existent flavor
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900112 nonexistent_flavor = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900113 self.assertRaises(exceptions.BadRequest, self.client.resize,
114 self.server_id, flavor_ref=nonexistent_flavor)
115
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900116 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900117 def test_resize_server_with_null_flavor(self):
118 # Resize a server with null flavor
119 self.assertRaises(exceptions.BadRequest, self.client.resize,
120 self.server_id, flavor_ref="")
121
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900122 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900123 def test_reboot_non_existent_server(self):
124 # Reboot a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900125 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900126 self.assertRaises(exceptions.NotFound, self.client.reboot,
127 nonexistent_server, 'SOFT')
128
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900129 @test.attr(type=['negative', 'gate'])
Anju Tiwari8c789762013-07-22 11:02:05 +0530130 def test_pause_paused_server(self):
131 # Pause a paused server.
Anju Tiwari8c789762013-07-22 11:02:05 +0530132 self.client.pause_server(self.server_id)
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200133 self.addCleanup(self.client.unpause_server,
134 self.server_id)
Anju Tiwari8c789762013-07-22 11:02:05 +0530135 self.client.wait_for_server_status(self.server_id, 'PAUSED')
Anju5c3e510c2013-10-18 06:40:29 +0530136 self.assertRaises(exceptions.Conflict,
Anju Tiwari8c789762013-07-22 11:02:05 +0530137 self.client.pause_server,
138 self.server_id)
139
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900140 @test.attr(type=['negative', 'gate'])
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200141 def test_rebuild_reboot_deleted_server(self):
142 # Rebuild and Reboot a deleted server
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900143 _, server = self.create_test_server()
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200144 self.client.delete_server(server['id'])
145 self.client.wait_for_server_termination(server['id'])
donald-ngo18edb812013-02-22 11:37:15 -0800146
147 self.assertRaises(exceptions.NotFound,
148 self.client.rebuild,
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200149 server['id'], self.image_ref_alt)
150 self.assertRaises(exceptions.NotFound, self.client.reboot,
151 server['id'], 'SOFT')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700152
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900153 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900154 def test_rebuild_non_existent_server(self):
155 # Rebuild a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900156 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900157 meta = {'rebuild': 'server'}
Masayuki Igawa259c1132013-10-31 17:48:44 +0900158 new_name = data_utils.rand_name('server')
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900159 file_contents = 'Test server rebuild.'
160 personality = [{'path': '/etc/rebuild.txt',
161 'contents': base64.b64encode(file_contents)}]
162 self.assertRaises(exceptions.NotFound,
163 self.client.rebuild,
164 nonexistent_server,
165 self.image_ref_alt,
166 name=new_name, meta=meta,
167 personality=personality,
168 adminPass='rebuild')
169
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900170 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700171 def test_create_numeric_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500172 # Create a server with a numeric name
Sean Daguee623f752013-02-27 14:52:15 -0500173 if self.__class__._interface == "xml":
174 raise self.skipException("Not testable in XML")
Rohit Karajgidc300b22012-05-04 08:11:00 -0700175
176 server_name = 12345
Sean Dague9b669e32012-12-13 18:40:08 -0500177 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900178 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -0500179 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700180
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900181 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700182 def test_create_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500183 # Create a server with name length exceeding 256 characters
Rohit Karajgidc300b22012-05-04 08:11:00 -0700184
185 server_name = 'a' * 256
Sean Dague9b669e32012-12-13 18:40:08 -0500186 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900187 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -0500188 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700189
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900190 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700191 def test_create_with_invalid_network_uuid(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500192 # Pass invalid network uuid while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700193
Chris Yeohfc9e3332013-01-21 09:28:13 +1030194 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 -0700195
Sean Dague9b669e32012-12-13 18:40:08 -0500196 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900197 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800198 networks=networks)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700199
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900200 @test.attr(type=['negative', 'gate'])
nayna-patel179077c2014-01-15 12:27:16 +0000201 def test_create_with_non_existent_keypair(self):
Chang Bo Guof099f802013-09-13 19:01:46 -0700202 # Pass a non-existent keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700203
Masayuki Igawa259c1132013-10-31 17:48:44 +0900204 key_name = data_utils.rand_name('key')
Sean Dague9b669e32012-12-13 18:40:08 -0500205 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900206 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800207 key_name=key_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700208
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900209 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700210 def test_create_server_metadata_exceeds_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500211 # Pass really long metadata while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700212
Rohit Karajgidc300b22012-05-04 08:11:00 -0700213 metadata = {'a': 'b' * 260}
Sean Dague9b669e32012-12-13 18:40:08 -0500214 self.assertRaises(exceptions.OverLimit,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900215 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800216 meta=metadata)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700217
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900218 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700219 def test_update_name_of_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500220 # Update name of a non-existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700221
Masayuki Igawa259c1132013-10-31 17:48:44 +0900222 server_name = data_utils.rand_name('server')
223 new_name = data_utils.rand_name('server') + '_updated'
Rohit Karajgidc300b22012-05-04 08:11:00 -0700224
225 self.assertRaises(exceptions.NotFound, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800226 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700227
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900228 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700229 def test_update_server_set_empty_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500230 # Update name of the server to an empty string
Rohit Karajgidc300b22012-05-04 08:11:00 -0700231
Masayuki Igawa259c1132013-10-31 17:48:44 +0900232 server_name = data_utils.rand_name('server')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700233 new_name = ''
234
235 self.assertRaises(exceptions.BadRequest, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800236 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700237
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900238 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700239 def test_update_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500240 # Update name of a server that belongs to another tenant
Rohit Karajgidc300b22012-05-04 08:11:00 -0700241
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900242 new_name = self.server_id + '_new'
Rohit Karajgidc300b22012-05-04 08:11:00 -0700243 self.assertRaises(exceptions.NotFound,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900244 self.alt_client.update_server, self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800245 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700246
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900247 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700248 def test_update_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500249 # Update name of server exceed the name length limit
Rohit Karajgidc300b22012-05-04 08:11:00 -0700250
Rohit Karajgidc300b22012-05-04 08:11:00 -0700251 new_name = 'a' * 256
252 self.assertRaises(exceptions.BadRequest,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800253 self.client.update_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900254 self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800255 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700256
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900257 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700258 def test_delete_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500259 # Delete a non existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700260
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900261 nonexistent_server = data_utils.rand_uuid()
Rohit Karajgidc300b22012-05-04 08:11:00 -0700262 self.assertRaises(exceptions.NotFound, self.client.delete_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900263 nonexistent_server)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700264
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900265 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700266 def test_delete_a_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500267 # Delete a server that belongs to another tenant
Matthew Treinish38c4dc42013-07-30 14:30:07 -0400268 self.assertRaises(exceptions.NotFound,
269 self.alt_client.delete_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900270 self.server_id)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700271
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900272 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700273 def test_delete_server_pass_negative_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500274 # Pass an invalid string parameter to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700275
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800276 self.assertRaises(exceptions.NotFound, self.client.delete_server, -1)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700277
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900278 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700279 def test_delete_server_pass_id_exceeding_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500280 # Pass a server ID that exceeds length limit to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700281
282 self.assertRaises(exceptions.NotFound, self.client.delete_server,
283 sys.maxint + 1)
donald-ngo78bd7f52013-02-08 14:35:16 -0800284
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900285 @test.attr(type=['negative', 'gate'])
donald-ngo78bd7f52013-02-08 14:35:16 -0800286 def test_create_with_nonexistent_security_group(self):
287 # Create a server with a nonexistent security group
donald-ngo18edb812013-02-22 11:37:15 -0800288
289 security_groups = [{'name': 'does_not_exist'}]
Jordan Pittierce89f632013-06-25 16:04:39 +0000290 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900291 self.create_test_server,
donald-ngo18edb812013-02-22 11:37:15 -0800292 security_groups=security_groups)
hi2suresh063acbc2013-02-20 09:32:03 +0000293
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900294 @test.attr(type=['negative', 'gate'])
hi2suresh063acbc2013-02-20 09:32:03 +0000295 def test_get_non_existent_server(self):
296 # Get a non existent server details
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900297 nonexistent_server = data_utils.rand_uuid()
hi2suresh063acbc2013-02-20 09:32:03 +0000298 self.assertRaises(exceptions.NotFound, self.client.get_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900299 nonexistent_server)
Sean Daguee623f752013-02-27 14:52:15 -0500300
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900301 @test.attr(type=['negative', 'gate'])
Anju Tiwari6c336162013-08-08 12:21:02 +0530302 def test_stop_non_existent_server(self):
303 # Stop a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900304 nonexistent_server = data_utils.rand_uuid()
Anju Tiwari6c336162013-08-08 12:21:02 +0530305 self.assertRaises(exceptions.NotFound, self.servers_client.stop,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900306 nonexistent_server)
Anju Tiwari6c336162013-08-08 12:21:02 +0530307
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900308 @test.attr(type=['negative', 'gate'])
Anju Tiwari6c336162013-08-08 12:21:02 +0530309 def test_pause_non_existent_server(self):
310 # pause a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900311 nonexistent_server = data_utils.rand_uuid()
Anju Tiwari6c336162013-08-08 12:21:02 +0530312 self.assertRaises(exceptions.NotFound, self.client.pause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900313 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800314
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900315 @test.attr(type=['negative', 'gate'])
LingxianKongb2ca96f2013-09-28 23:09:30 +0800316 def test_unpause_non_existent_server(self):
317 # unpause a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900318 nonexistent_server = data_utils.rand_uuid()
LingxianKongb2ca96f2013-09-28 23:09:30 +0800319 self.assertRaises(exceptions.NotFound, self.client.unpause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900320 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800321
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900322 @test.attr(type=['negative', 'gate'])
LingxianKongb2ca96f2013-09-28 23:09:30 +0800323 def test_unpause_server_invalid_state(self):
324 # unpause an active server.
Anju5c3e510c2013-10-18 06:40:29 +0530325 self.assertRaises(exceptions.Conflict,
LingxianKongb2ca96f2013-09-28 23:09:30 +0800326 self.client.unpause_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900327 self.server_id)
Anju Tiwari6c336162013-08-08 12:21:02 +0530328
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900329 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800330 def test_suspend_non_existent_server(self):
331 # suspend a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900332 nonexistent_server = data_utils.rand_uuid()
LingxianKong691a5702013-09-29 11:43:45 +0800333 self.assertRaises(exceptions.NotFound, self.client.suspend_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900334 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800335
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900336 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800337 def test_suspend_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800338 # suspend a suspended server.
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900339 resp, _ = self.client.suspend_server(self.server_id)
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200340 self.addCleanup(self.client.resume_server,
341 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800342 self.assertEqual(202, resp.status)
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900343 self.client.wait_for_server_status(self.server_id, 'SUSPENDED')
Anju5c3e510c2013-10-18 06:40:29 +0530344 self.assertRaises(exceptions.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800345 self.client.suspend_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900346 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800347
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900348 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800349 def test_resume_non_existent_server(self):
350 # resume a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900351 nonexistent_server = data_utils.rand_uuid()
LingxianKong691a5702013-09-29 11:43:45 +0800352 self.assertRaises(exceptions.NotFound, self.client.resume_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900353 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800354
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900355 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800356 def test_resume_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800357 # resume an active server.
Anju5c3e510c2013-10-18 06:40:29 +0530358 self.assertRaises(exceptions.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800359 self.client.resume_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900360 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800361
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900362 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900363 def test_get_console_output_of_non_existent_server(self):
364 # get the console output for a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900365 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900366 self.assertRaises(exceptions.NotFound,
367 self.client.get_console_output,
368 nonexistent_server, 10)
369
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900370 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800371 def test_force_delete_nonexistent_server_id(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900372 # force-delete a non existent server
373 nonexistent_server = data_utils.rand_uuid()
Lingxian Kongaecc1092013-10-03 16:18:46 +0800374 self.assertRaises(exceptions.NotFound,
375 self.client.force_delete_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900376 nonexistent_server)
Lingxian Kongaecc1092013-10-03 16:18:46 +0800377
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900378 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800379 def test_force_delete_server_invalid_state(self):
380 # we can only force-delete a server in 'soft-delete' state
381 self.assertRaises(exceptions.Conflict,
382 self.client.force_delete_server,
383 self.server_id)
384
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900385 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800386 def test_restore_nonexistent_server_id(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900387 # restore-delete a non existent server
388 nonexistent_server = data_utils.rand_uuid()
Lingxian Kongaecc1092013-10-03 16:18:46 +0800389 self.assertRaises(exceptions.NotFound,
390 self.client.restore_soft_deleted_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900391 nonexistent_server)
Lingxian Kongaecc1092013-10-03 16:18:46 +0800392
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900393 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800394 def test_restore_server_invalid_state(self):
395 # we can only restore-delete a server in 'soft-delete' state
396 self.assertRaises(exceptions.Conflict,
397 self.client.restore_soft_deleted_server,
398 self.server_id)
399
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900400 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900401 def test_shelve_non_existent_server(self):
402 # shelve a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900403 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900404 self.assertRaises(exceptions.NotFound, self.client.shelve_server,
405 nonexistent_server)
406
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900407 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900408 def test_shelve_shelved_server(self):
409 # shelve a shelved server.
410 resp, server = self.client.shelve_server(self.server_id)
411 self.assertEqual(202, resp.status)
412 self.addCleanup(self.client.unshelve_server, self.server_id)
413
Matthew Treinishb0a78fc2014-01-29 16:49:12 +0000414 offload_time = CONF.compute.shelved_offload_time
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900415 if offload_time >= 0:
416 self.client.wait_for_server_status(self.server_id,
417 'SHELVED_OFFLOADED',
418 extra_timeout=offload_time)
419 else:
420 self.client.wait_for_server_status(self.server_id,
421 'SHELVED')
422
423 resp, server = self.client.get_server(self.server_id)
424 image_name = server['name'] + '-shelved'
425 params = {'name': image_name}
426 resp, images = self.images_client.list_images(params)
427 self.assertEqual(1, len(images))
428 self.assertEqual(image_name, images[0]['name'])
429
430 self.assertRaises(exceptions.Conflict,
431 self.client.shelve_server,
432 self.server_id)
433
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900434 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900435 def test_unshelve_non_existent_server(self):
436 # unshelve a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900437 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900438 self.assertRaises(exceptions.NotFound, self.client.unshelve_server,
439 nonexistent_server)
440
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900441 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900442 def test_unshelve_server_invalid_state(self):
443 # unshelve an active server.
444 self.assertRaises(exceptions.Conflict,
445 self.client.unshelve_server,
446 self.server_id)
447
Sean Daguee623f752013-02-27 14:52:15 -0500448
Xiao Hanyuab61c072013-06-26 15:33:42 +0800449class ServersNegativeTestXML(ServersNegativeTestJSON):
Sean Daguee623f752013-02-27 14:52:15 -0500450 _interface = 'xml'