blob: 6343ead84bcf863058b72c1d699a04a6053d6241 [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
Eric Windischb5538072014-03-09 23:47:35 -040019import testtools
20
Sean Dague1937d092013-05-17 16:36:38 -040021from tempest.api.compute import base
Matthew Treinish481466b2012-12-20 17:16:01 -050022from tempest import clients
Masayuki Igawa259c1132013-10-31 17:48:44 +090023from tempest.common.utils import data_utils
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000024from tempest import config
Daryl Wallecked8bef32011-12-05 23:02:08 -060025from tempest import exceptions
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090026from tempest import test
Daryl Walleckadea1fa2011-11-15 18:36:39 -060027
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000028CONF = config.CONF
29
Daryl Walleckadea1fa2011-11-15 18:36:39 -060030
ivan-zhuf2b00502013-10-18 10:06:52 +080031class ServersNegativeTestJSON(base.BaseV2ComputeTest):
Daryl Walleckadea1fa2011-11-15 18:36:39 -060032
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090033 def setUp(self):
34 super(ServersNegativeTestJSON, self).setUp()
35 try:
36 self.client.wait_for_server_status(self.server_id, 'ACTIVE')
37 except Exception:
Ken'ichi Ohmichi122cdf52013-12-11 21:32:25 +090038 self.__class__.server_id = self.rebuild_server(self.server_id)
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090039
Attila Fazekas305e65b2013-10-29 13:23:07 +010040 def tearDown(self):
41 self.server_check_teardown()
42 super(ServersNegativeTestJSON, self).tearDown()
43
Daryl Walleckadea1fa2011-11-15 18:36:39 -060044 @classmethod
45 def setUpClass(cls):
Xiao Hanyuab61c072013-06-26 15:33:42 +080046 super(ServersNegativeTestJSON, cls).setUpClass()
Daryl Walleckc7251962012-03-12 17:26:54 -050047 cls.client = cls.servers_client
Andrey Pavlove8d3fd52014-06-02 08:17:02 +040048 if CONF.compute.allow_tenant_isolation:
49 cls.alt_os = clients.Manager(cls.isolated_creds.get_alt_creds())
50 else:
51 cls.alt_os = clients.AltManager()
Rohit Karajgidc300b22012-05-04 08:11:00 -070052 cls.alt_client = cls.alt_os.servers_client
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090053 resp, server = cls.create_test_server(wait_until='ACTIVE')
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090054 cls.server_id = server['id']
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_server_name_blank(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050058 # Create a server with name parameter empty
donald-ngo18edb812013-02-22 11:37:15 -080059
60 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090061 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050062 name='')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060063
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090064 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060065 def test_personality_file_contents_not_encoded(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050066 # Use an unencoded file when creating a server with personality
donald-ngo18edb812013-02-22 11:37:15 -080067
Daryl Walleckadea1fa2011-11-15 18:36:39 -060068 file_contents = 'This is a test file.'
Sean Dague9b669e32012-12-13 18:40:08 -050069 person = [{'path': '/etc/testfile.txt',
70 'contents': file_contents}]
Daryl Walleckadea1fa2011-11-15 18:36:39 -060071
donald-ngo18edb812013-02-22 11:37:15 -080072 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090073 self.create_test_server,
donald-ngo18edb812013-02-22 11:37:15 -080074 personality=person)
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_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050078 # Create a server with an unknown image
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 image_id=-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_create_with_invalid_flavor(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050086 # Create a server with an unknown flavor
donald-ngo18edb812013-02-22 11:37:15 -080087
88 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090089 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050090 flavor=-1,)
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_access_ip_v4_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050094 # An access IPv4 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080095
Sean Dague9b669e32012-12-13 18:40:08 -050096 IPv4 = '1.1.1.1.1.1'
donald-ngo18edb812013-02-22 11:37:15 -080097 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090098 self.create_test_server, accessIPv4=IPv4)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060099
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900100 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -0600101 def test_invalid_ip_v6_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500102 # An access IPv6 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -0800103
Sean Dague9b669e32012-12-13 18:40:08 -0500104 IPv6 = 'notvalid'
donald-ngo18edb812013-02-22 11:37:15 -0800105
106 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900107 self.create_test_server, accessIPv6=IPv6)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000108
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900109 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V Sf49bf182013-10-21 10:19:43 +0530110 def test_resize_nonexistent_server(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900111 # Resize a non-existent server
112 nonexistent_server = data_utils.rand_uuid()
Hoisaleshwara Madan V Sf49bf182013-10-21 10:19:43 +0530113 self.assertRaises(exceptions.NotFound,
114 self.client.resize,
115 nonexistent_server, self.flavor_ref)
116
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900117 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900118 def test_resize_server_with_non_existent_flavor(self):
119 # Resize a server with non-existent flavor
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900120 nonexistent_flavor = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900121 self.assertRaises(exceptions.BadRequest, self.client.resize,
122 self.server_id, flavor_ref=nonexistent_flavor)
123
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900124 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900125 def test_resize_server_with_null_flavor(self):
126 # Resize a server with null flavor
127 self.assertRaises(exceptions.BadRequest, self.client.resize,
128 self.server_id, flavor_ref="")
129
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900130 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900131 def test_reboot_non_existent_server(self):
132 # Reboot a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900133 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900134 self.assertRaises(exceptions.NotFound, self.client.reboot,
135 nonexistent_server, 'SOFT')
136
Matt Riedemann992162e2014-03-24 09:11:06 -0700137 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
138 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900139 @test.attr(type=['negative', 'gate'])
Anju Tiwari8c789762013-07-22 11:02:05 +0530140 def test_pause_paused_server(self):
141 # Pause a paused server.
Anju Tiwari8c789762013-07-22 11:02:05 +0530142 self.client.pause_server(self.server_id)
143 self.client.wait_for_server_status(self.server_id, 'PAUSED')
Anju5c3e510c2013-10-18 06:40:29 +0530144 self.assertRaises(exceptions.Conflict,
Anju Tiwari8c789762013-07-22 11:02:05 +0530145 self.client.pause_server,
146 self.server_id)
Attila Fazekas305e65b2013-10-29 13:23:07 +0100147 self.client.unpause_server(self.server_id)
Anju Tiwari8c789762013-07-22 11:02:05 +0530148
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900149 @test.attr(type=['negative', 'gate'])
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200150 def test_rebuild_reboot_deleted_server(self):
151 # Rebuild and Reboot a deleted server
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900152 _, server = self.create_test_server()
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200153 self.client.delete_server(server['id'])
154 self.client.wait_for_server_termination(server['id'])
donald-ngo18edb812013-02-22 11:37:15 -0800155
156 self.assertRaises(exceptions.NotFound,
157 self.client.rebuild,
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200158 server['id'], self.image_ref_alt)
159 self.assertRaises(exceptions.NotFound, self.client.reboot,
160 server['id'], 'SOFT')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700161
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900162 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900163 def test_rebuild_non_existent_server(self):
164 # Rebuild a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900165 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900166 meta = {'rebuild': 'server'}
Masayuki Igawa259c1132013-10-31 17:48:44 +0900167 new_name = data_utils.rand_name('server')
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900168 file_contents = 'Test server rebuild.'
169 personality = [{'path': '/etc/rebuild.txt',
170 'contents': base64.b64encode(file_contents)}]
171 self.assertRaises(exceptions.NotFound,
172 self.client.rebuild,
173 nonexistent_server,
174 self.image_ref_alt,
175 name=new_name, meta=meta,
176 personality=personality,
177 adminPass='rebuild')
178
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900179 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700180 def test_create_numeric_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500181 # Create a server with a numeric name
Sean Daguee623f752013-02-27 14:52:15 -0500182 if self.__class__._interface == "xml":
183 raise self.skipException("Not testable in XML")
Rohit Karajgidc300b22012-05-04 08:11:00 -0700184
185 server_name = 12345
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_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500192 # Create a server with name length exceeding 256 characters
Rohit Karajgidc300b22012-05-04 08:11:00 -0700193
194 server_name = 'a' * 256
Sean Dague9b669e32012-12-13 18:40:08 -0500195 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900196 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -0500197 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700198
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900199 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700200 def test_create_with_invalid_network_uuid(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500201 # Pass invalid network uuid while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700202
Chris Yeohfc9e3332013-01-21 09:28:13 +1030203 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 -0700204
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 networks=networks)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700208
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900209 @test.attr(type=['negative', 'gate'])
nayna-patel179077c2014-01-15 12:27:16 +0000210 def test_create_with_non_existent_keypair(self):
Chang Bo Guof099f802013-09-13 19:01:46 -0700211 # Pass a non-existent keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700212
Masayuki Igawa259c1132013-10-31 17:48:44 +0900213 key_name = data_utils.rand_name('key')
Sean Dague9b669e32012-12-13 18:40:08 -0500214 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900215 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800216 key_name=key_name)
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_create_server_metadata_exceeds_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500220 # Pass really long metadata while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700221
Rohit Karajgidc300b22012-05-04 08:11:00 -0700222 metadata = {'a': 'b' * 260}
Sean Dague9b669e32012-12-13 18:40:08 -0500223 self.assertRaises(exceptions.OverLimit,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900224 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800225 meta=metadata)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700226
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900227 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700228 def test_update_name_of_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500229 # Update name of a non-existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700230
Masayuki Igawa259c1132013-10-31 17:48:44 +0900231 server_name = data_utils.rand_name('server')
232 new_name = data_utils.rand_name('server') + '_updated'
Rohit Karajgidc300b22012-05-04 08:11:00 -0700233
234 self.assertRaises(exceptions.NotFound, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800235 server_name, name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700236
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900237 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700238 def test_update_server_set_empty_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500239 # Update name of the server to an empty string
Rohit Karajgidc300b22012-05-04 08:11:00 -0700240
Masayuki Igawa259c1132013-10-31 17:48:44 +0900241 server_name = data_utils.rand_name('server')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700242 new_name = ''
243
244 self.assertRaises(exceptions.BadRequest, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800245 server_name, 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_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500249 # Update name of a server that belongs to another tenant
Rohit Karajgidc300b22012-05-04 08:11:00 -0700250
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900251 new_name = self.server_id + '_new'
Rohit Karajgidc300b22012-05-04 08:11:00 -0700252 self.assertRaises(exceptions.NotFound,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900253 self.alt_client.update_server, self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800254 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700255
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900256 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700257 def test_update_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500258 # Update name of server exceed the name length limit
Rohit Karajgidc300b22012-05-04 08:11:00 -0700259
Rohit Karajgidc300b22012-05-04 08:11:00 -0700260 new_name = 'a' * 256
261 self.assertRaises(exceptions.BadRequest,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800262 self.client.update_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900263 self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800264 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700265
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900266 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700267 def test_delete_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500268 # Delete a non existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700269
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900270 nonexistent_server = data_utils.rand_uuid()
Rohit Karajgidc300b22012-05-04 08:11:00 -0700271 self.assertRaises(exceptions.NotFound, self.client.delete_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900272 nonexistent_server)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700273
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900274 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700275 def test_delete_a_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500276 # Delete a server that belongs to another tenant
Matthew Treinish38c4dc42013-07-30 14:30:07 -0400277 self.assertRaises(exceptions.NotFound,
278 self.alt_client.delete_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900279 self.server_id)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700280
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900281 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700282 def test_delete_server_pass_negative_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500283 # Pass an invalid string parameter to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700284
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800285 self.assertRaises(exceptions.NotFound, self.client.delete_server, -1)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700286
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900287 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700288 def test_delete_server_pass_id_exceeding_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500289 # Pass a server ID that exceeds length limit to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700290
291 self.assertRaises(exceptions.NotFound, self.client.delete_server,
292 sys.maxint + 1)
donald-ngo78bd7f52013-02-08 14:35:16 -0800293
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900294 @test.attr(type=['negative', 'gate'])
donald-ngo78bd7f52013-02-08 14:35:16 -0800295 def test_create_with_nonexistent_security_group(self):
296 # Create a server with a nonexistent security group
donald-ngo18edb812013-02-22 11:37:15 -0800297
298 security_groups = [{'name': 'does_not_exist'}]
Jordan Pittierce89f632013-06-25 16:04:39 +0000299 self.assertRaises(exceptions.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900300 self.create_test_server,
donald-ngo18edb812013-02-22 11:37:15 -0800301 security_groups=security_groups)
hi2suresh063acbc2013-02-20 09:32:03 +0000302
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900303 @test.attr(type=['negative', 'gate'])
hi2suresh063acbc2013-02-20 09:32:03 +0000304 def test_get_non_existent_server(self):
305 # Get a non existent server details
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900306 nonexistent_server = data_utils.rand_uuid()
hi2suresh063acbc2013-02-20 09:32:03 +0000307 self.assertRaises(exceptions.NotFound, self.client.get_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900308 nonexistent_server)
Sean Daguee623f752013-02-27 14:52:15 -0500309
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900310 @test.attr(type=['negative', 'gate'])
Anju Tiwari6c336162013-08-08 12:21:02 +0530311 def test_stop_non_existent_server(self):
312 # Stop a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900313 nonexistent_server = data_utils.rand_uuid()
Anju Tiwari6c336162013-08-08 12:21:02 +0530314 self.assertRaises(exceptions.NotFound, self.servers_client.stop,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900315 nonexistent_server)
Anju Tiwari6c336162013-08-08 12:21:02 +0530316
Matt Riedemann992162e2014-03-24 09:11:06 -0700317 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
318 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900319 @test.attr(type=['negative', 'gate'])
Anju Tiwari6c336162013-08-08 12:21:02 +0530320 def test_pause_non_existent_server(self):
321 # pause a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900322 nonexistent_server = data_utils.rand_uuid()
Anju Tiwari6c336162013-08-08 12:21:02 +0530323 self.assertRaises(exceptions.NotFound, self.client.pause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900324 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800325
Matt Riedemann992162e2014-03-24 09:11:06 -0700326 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
327 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900328 @test.attr(type=['negative', 'gate'])
LingxianKongb2ca96f2013-09-28 23:09:30 +0800329 def test_unpause_non_existent_server(self):
330 # unpause a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900331 nonexistent_server = data_utils.rand_uuid()
LingxianKongb2ca96f2013-09-28 23:09:30 +0800332 self.assertRaises(exceptions.NotFound, self.client.unpause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900333 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800334
Matt Riedemann992162e2014-03-24 09:11:06 -0700335 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
336 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900337 @test.attr(type=['negative', 'gate'])
LingxianKongb2ca96f2013-09-28 23:09:30 +0800338 def test_unpause_server_invalid_state(self):
339 # unpause an active server.
Anju5c3e510c2013-10-18 06:40:29 +0530340 self.assertRaises(exceptions.Conflict,
LingxianKongb2ca96f2013-09-28 23:09:30 +0800341 self.client.unpause_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900342 self.server_id)
Anju Tiwari6c336162013-08-08 12:21:02 +0530343
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700344 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
345 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900346 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800347 def test_suspend_non_existent_server(self):
348 # suspend a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900349 nonexistent_server = data_utils.rand_uuid()
LingxianKong691a5702013-09-29 11:43:45 +0800350 self.assertRaises(exceptions.NotFound, self.client.suspend_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900351 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800352
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700353 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
354 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900355 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800356 def test_suspend_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800357 # suspend a suspended server.
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900358 resp, _ = self.client.suspend_server(self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800359 self.assertEqual(202, resp.status)
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900360 self.client.wait_for_server_status(self.server_id, 'SUSPENDED')
Anju5c3e510c2013-10-18 06:40:29 +0530361 self.assertRaises(exceptions.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800362 self.client.suspend_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900363 self.server_id)
Attila Fazekas305e65b2013-10-29 13:23:07 +0100364 self.client.resume_server(self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800365
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700366 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
367 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900368 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800369 def test_resume_non_existent_server(self):
370 # resume a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900371 nonexistent_server = data_utils.rand_uuid()
LingxianKong691a5702013-09-29 11:43:45 +0800372 self.assertRaises(exceptions.NotFound, self.client.resume_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900373 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800374
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700375 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
376 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900377 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800378 def test_resume_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800379 # resume an active server.
Anju5c3e510c2013-10-18 06:40:29 +0530380 self.assertRaises(exceptions.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800381 self.client.resume_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900382 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800383
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900384 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900385 def test_get_console_output_of_non_existent_server(self):
386 # get the console output for a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900387 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900388 self.assertRaises(exceptions.NotFound,
389 self.client.get_console_output,
390 nonexistent_server, 10)
391
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900392 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800393 def test_force_delete_nonexistent_server_id(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900394 # force-delete a non existent server
395 nonexistent_server = data_utils.rand_uuid()
Lingxian Kongaecc1092013-10-03 16:18:46 +0800396 self.assertRaises(exceptions.NotFound,
397 self.client.force_delete_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900398 nonexistent_server)
Lingxian Kongaecc1092013-10-03 16:18:46 +0800399
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900400 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800401 def test_force_delete_server_invalid_state(self):
402 # we can only force-delete a server in 'soft-delete' state
403 self.assertRaises(exceptions.Conflict,
404 self.client.force_delete_server,
405 self.server_id)
406
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900407 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800408 def test_restore_nonexistent_server_id(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900409 # restore-delete a non existent server
410 nonexistent_server = data_utils.rand_uuid()
Lingxian Kongaecc1092013-10-03 16:18:46 +0800411 self.assertRaises(exceptions.NotFound,
412 self.client.restore_soft_deleted_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900413 nonexistent_server)
Lingxian Kongaecc1092013-10-03 16:18:46 +0800414
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900415 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800416 def test_restore_server_invalid_state(self):
417 # we can only restore-delete a server in 'soft-delete' state
418 self.assertRaises(exceptions.Conflict,
419 self.client.restore_soft_deleted_server,
420 self.server_id)
421
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900422 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900423 def test_shelve_non_existent_server(self):
424 # shelve a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900425 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900426 self.assertRaises(exceptions.NotFound, self.client.shelve_server,
427 nonexistent_server)
428
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900429 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900430 def test_shelve_shelved_server(self):
431 # shelve a shelved server.
432 resp, server = self.client.shelve_server(self.server_id)
433 self.assertEqual(202, resp.status)
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900434
Matthew Treinishb0a78fc2014-01-29 16:49:12 +0000435 offload_time = CONF.compute.shelved_offload_time
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900436 if offload_time >= 0:
437 self.client.wait_for_server_status(self.server_id,
438 'SHELVED_OFFLOADED',
439 extra_timeout=offload_time)
440 else:
441 self.client.wait_for_server_status(self.server_id,
442 'SHELVED')
443
444 resp, server = self.client.get_server(self.server_id)
445 image_name = server['name'] + '-shelved'
446 params = {'name': image_name}
447 resp, images = self.images_client.list_images(params)
448 self.assertEqual(1, len(images))
449 self.assertEqual(image_name, images[0]['name'])
450
451 self.assertRaises(exceptions.Conflict,
452 self.client.shelve_server,
453 self.server_id)
454
Attila Fazekas305e65b2013-10-29 13:23:07 +0100455 self.client.unshelve_server(self.server_id)
456
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900457 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900458 def test_unshelve_non_existent_server(self):
459 # unshelve a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900460 nonexistent_server = data_utils.rand_uuid()
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900461 self.assertRaises(exceptions.NotFound, self.client.unshelve_server,
462 nonexistent_server)
463
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900464 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900465 def test_unshelve_server_invalid_state(self):
466 # unshelve an active server.
467 self.assertRaises(exceptions.Conflict,
468 self.client.unshelve_server,
469 self.server_id)
470
Sean Daguee623f752013-02-27 14:52:15 -0500471
Xiao Hanyuab61c072013-06-26 15:33:42 +0800472class ServersNegativeTestXML(ServersNegativeTestJSON):
Sean Daguee623f752013-02-27 14:52:15 -0500473 _interface = 'xml'