blob: d89aff4ee2aea10ee81e6251d9b142e2df302a94 [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
Rohit Karajgidc300b22012-05-04 08:11:00 -070016import sys
Jay Pipes13b479b2012-06-11 14:52:27 -040017
Masayuki Igawa90c914e2015-01-20 14:48:16 +090018from tempest_lib import exceptions as lib_exc
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
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090025from tempest import test
Daryl Walleckadea1fa2011-11-15 18:36:39 -060026
Matthew Treinishb0a78fc2014-01-29 16:49:12 +000027CONF = config.CONF
28
Daryl Walleckadea1fa2011-11-15 18:36:39 -060029
ivan-zhuf2b00502013-10-18 10:06:52 +080030class ServersNegativeTestJSON(base.BaseV2ComputeTest):
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
Attila Fazekas305e65b2013-10-29 13:23:07 +010039 def tearDown(self):
40 self.server_check_teardown()
41 super(ServersNegativeTestJSON, self).tearDown()
42
Daryl Walleckadea1fa2011-11-15 18:36:39 -060043 @classmethod
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010044 def resource_setup(cls):
45 super(ServersNegativeTestJSON, cls).resource_setup()
Daryl Walleckc7251962012-03-12 17:26:54 -050046 cls.client = cls.servers_client
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010047 cls.alt_os = clients.Manager(cls.isolated_creds.get_alt_creds())
Rohit Karajgidc300b22012-05-04 08:11:00 -070048 cls.alt_client = cls.alt_os.servers_client
David Kranz0fb14292015-02-11 15:55:20 -050049 server = cls.create_test_server(wait_until='ACTIVE')
Ken'ichi Ohmichida306502013-10-08 23:44:55 +090050 cls.server_id = server['id']
Daryl Walleckadea1fa2011-11-15 18:36:39 -060051
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090052 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060053 def test_server_name_blank(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050054 # Create a server with name parameter empty
donald-ngo18edb812013-02-22 11:37:15 -080055
Masayuki Igawa4b29e472015-02-16 10:41:54 +090056 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090057 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050058 name='')
Daryl Walleckadea1fa2011-11-15 18:36:39 -060059
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090060 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060061 def test_personality_file_contents_not_encoded(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050062 # Use an unencoded file when creating a server with personality
donald-ngo18edb812013-02-22 11:37:15 -080063
Daryl Walleckadea1fa2011-11-15 18:36:39 -060064 file_contents = 'This is a test file.'
Sean Dague9b669e32012-12-13 18:40:08 -050065 person = [{'path': '/etc/testfile.txt',
66 'contents': file_contents}]
Daryl Walleckadea1fa2011-11-15 18:36:39 -060067
Masayuki Igawa4b29e472015-02-16 10:41:54 +090068 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090069 self.create_test_server,
donald-ngo18edb812013-02-22 11:37:15 -080070 personality=person)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060071
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090072 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060073 def test_create_with_invalid_image(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050074 # Create a server with an unknown image
donald-ngo18edb812013-02-22 11:37:15 -080075
Masayuki Igawa4b29e472015-02-16 10:41:54 +090076 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090077 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050078 image_id=-1)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060079
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090080 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060081 def test_create_with_invalid_flavor(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050082 # Create a server with an unknown flavor
donald-ngo18edb812013-02-22 11:37:15 -080083
Masayuki Igawa4b29e472015-02-16 10:41:54 +090084 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090085 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -050086 flavor=-1,)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060087
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090088 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060089 def test_invalid_access_ip_v4_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050090 # An access IPv4 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080091
Sean Dague9b669e32012-12-13 18:40:08 -050092 IPv4 = '1.1.1.1.1.1'
Masayuki Igawa4b29e472015-02-16 10:41:54 +090093 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090094 self.create_test_server, accessIPv4=IPv4)
Daryl Walleckadea1fa2011-11-15 18:36:39 -060095
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +090096 @test.attr(type=['negative', 'gate'])
Daryl Walleckadea1fa2011-11-15 18:36:39 -060097 def test_invalid_ip_v6_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050098 # An access IPv6 address must match a valid address pattern
donald-ngo18edb812013-02-22 11:37:15 -080099
Sean Dague9b669e32012-12-13 18:40:08 -0500100 IPv6 = 'notvalid'
donald-ngo18edb812013-02-22 11:37:15 -0800101
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900102 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900103 self.create_test_server, accessIPv6=IPv6)
ravikumar-venkatesan36892e12012-05-11 18:01:41 +0000104
Joseph Lanouxb3d956f2014-06-25 14:45:24 +0000105 @testtools.skipUnless(CONF.compute_feature_enabled.resize,
106 'Resize not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900107 @test.attr(type=['negative', 'gate'])
Hoisaleshwara Madan V Sf49bf182013-10-21 10:19:43 +0530108 def test_resize_nonexistent_server(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900109 # Resize a non-existent server
110 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900111 self.assertRaises(lib_exc.NotFound,
Hoisaleshwara Madan V Sf49bf182013-10-21 10:19:43 +0530112 self.client.resize,
113 nonexistent_server, self.flavor_ref)
114
Joseph Lanouxb3d956f2014-06-25 14:45:24 +0000115 @testtools.skipUnless(CONF.compute_feature_enabled.resize,
116 'Resize not available.')
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()
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900121 self.assertRaises(lib_exc.BadRequest, self.client.resize,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900122 self.server_id, flavor_ref=nonexistent_flavor)
123
Joseph Lanouxb3d956f2014-06-25 14:45:24 +0000124 @testtools.skipUnless(CONF.compute_feature_enabled.resize,
125 'Resize not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900126 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900127 def test_resize_server_with_null_flavor(self):
128 # Resize a server with null flavor
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900129 self.assertRaises(lib_exc.BadRequest, self.client.resize,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900130 self.server_id, flavor_ref="")
131
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900132 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900133 def test_reboot_non_existent_server(self):
134 # Reboot a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900135 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900136 self.assertRaises(lib_exc.NotFound, self.client.reboot,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900137 nonexistent_server, 'SOFT')
138
Matt Riedemann992162e2014-03-24 09:11:06 -0700139 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
140 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900141 @test.attr(type=['negative', 'gate'])
Anju Tiwari8c789762013-07-22 11:02:05 +0530142 def test_pause_paused_server(self):
143 # Pause a paused server.
Anju Tiwari8c789762013-07-22 11:02:05 +0530144 self.client.pause_server(self.server_id)
145 self.client.wait_for_server_status(self.server_id, 'PAUSED')
Masayuki Igawad9388762015-01-20 14:56:42 +0900146 self.assertRaises(lib_exc.Conflict,
Anju Tiwari8c789762013-07-22 11:02:05 +0530147 self.client.pause_server,
148 self.server_id)
Attila Fazekas305e65b2013-10-29 13:23:07 +0100149 self.client.unpause_server(self.server_id)
Anju Tiwari8c789762013-07-22 11:02:05 +0530150
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900151 @test.attr(type=['negative', 'gate'])
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200152 def test_rebuild_reboot_deleted_server(self):
153 # Rebuild and Reboot a deleted server
David Kranz0fb14292015-02-11 15:55:20 -0500154 server = self.create_test_server()
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200155 self.client.delete_server(server['id'])
156 self.client.wait_for_server_termination(server['id'])
donald-ngo18edb812013-02-22 11:37:15 -0800157
Masayuki Igawabfa07602015-01-20 18:47:17 +0900158 self.assertRaises(lib_exc.NotFound,
donald-ngo18edb812013-02-22 11:37:15 -0800159 self.client.rebuild,
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200160 server['id'], self.image_ref_alt)
Masayuki Igawabfa07602015-01-20 18:47:17 +0900161 self.assertRaises(lib_exc.NotFound, self.client.reboot,
Attila Fazekas6fab1a12013-10-17 17:38:54 +0200162 server['id'], 'SOFT')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700163
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900164 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900165 def test_rebuild_non_existent_server(self):
166 # Rebuild a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900167 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900168 self.assertRaises(lib_exc.NotFound,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900169 self.client.rebuild,
170 nonexistent_server,
ghanshyamfe087de2014-12-16 09:23:58 +0900171 self.image_ref_alt)
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900172
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900173 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700174 def test_create_numeric_server_name(self):
Rohit Karajgidc300b22012-05-04 08:11:00 -0700175 server_name = 12345
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900176 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900177 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -0500178 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700179
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900180 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700181 def test_create_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500182 # Create a server with name length exceeding 256 characters
Rohit Karajgidc300b22012-05-04 08:11:00 -0700183
184 server_name = 'a' * 256
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900185 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900186 self.create_test_server,
Sean Dague22897e12013-02-25 17:54:09 -0500187 name=server_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700188
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900189 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700190 def test_create_with_invalid_network_uuid(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500191 # Pass invalid network uuid while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700192
Chris Yeohfc9e3332013-01-21 09:28:13 +1030193 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 -0700194
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900195 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900196 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800197 networks=networks)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700198
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900199 @test.attr(type=['negative', 'gate'])
nayna-patel179077c2014-01-15 12:27:16 +0000200 def test_create_with_non_existent_keypair(self):
Chang Bo Guof099f802013-09-13 19:01:46 -0700201 # Pass a non-existent keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700202
Masayuki Igawa259c1132013-10-31 17:48:44 +0900203 key_name = data_utils.rand_name('key')
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900204 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900205 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800206 key_name=key_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700207
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900208 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700209 def test_create_server_metadata_exceeds_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500210 # Pass really long metadata while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700211
Rohit Karajgidc300b22012-05-04 08:11:00 -0700212 metadata = {'a': 'b' * 260}
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900213 self.assertRaises((lib_exc.BadRequest, lib_exc.OverLimit),
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900214 self.create_test_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800215 meta=metadata)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700216
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900217 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700218 def test_update_name_of_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500219 # Update name of a non-existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700220
Masayuki Igawa259c1132013-10-31 17:48:44 +0900221 server_name = data_utils.rand_name('server')
222 new_name = data_utils.rand_name('server') + '_updated'
Rohit Karajgidc300b22012-05-04 08:11:00 -0700223
Masayuki Igawabfa07602015-01-20 18:47:17 +0900224 self.assertRaises(lib_exc.NotFound, self.client.update_server,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800225 server_name, name=new_name)
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_server_set_empty_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500229 # Update name of the server to an empty string
Rohit Karajgidc300b22012-05-04 08:11:00 -0700230
Masayuki Igawa259c1132013-10-31 17:48:44 +0900231 server_name = data_utils.rand_name('server')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700232 new_name = ''
233
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900234 self.assertRaises(lib_exc.BadRequest, 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_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500239 # Update name of a server that belongs to another tenant
Rohit Karajgidc300b22012-05-04 08:11:00 -0700240
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900241 new_name = self.server_id + '_new'
Masayuki Igawabfa07602015-01-20 18:47:17 +0900242 self.assertRaises(lib_exc.NotFound,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900243 self.alt_client.update_server, self.server_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800244 name=new_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700245
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900246 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700247 def test_update_server_name_length_exceeds_256(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500248 # Update name of server exceed the name length limit
Rohit Karajgidc300b22012-05-04 08:11:00 -0700249
Rohit Karajgidc300b22012-05-04 08:11:00 -0700250 new_name = 'a' * 256
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900251 self.assertRaises(lib_exc.BadRequest,
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800252 self.client.update_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900253 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_delete_non_existent_server(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500258 # Delete a non existent server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700259
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900260 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900261 self.assertRaises(lib_exc.NotFound, self.client.delete_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900262 nonexistent_server)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700263
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900264 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700265 def test_delete_a_server_of_another_tenant(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500266 # Delete a server that belongs to another tenant
Masayuki Igawabfa07602015-01-20 18:47:17 +0900267 self.assertRaises(lib_exc.NotFound,
Matthew Treinish38c4dc42013-07-30 14:30:07 -0400268 self.alt_client.delete_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900269 self.server_id)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700270
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900271 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700272 def test_delete_server_pass_negative_id(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500273 # Pass an invalid string parameter to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700274
Masayuki Igawabfa07602015-01-20 18:47:17 +0900275 self.assertRaises(lib_exc.NotFound, self.client.delete_server, -1)
Rohit Karajgidc300b22012-05-04 08:11:00 -0700276
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900277 @test.attr(type=['negative', 'gate'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700278 def test_delete_server_pass_id_exceeding_length_limit(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500279 # Pass a server ID that exceeds length limit to delete server
Rohit Karajgidc300b22012-05-04 08:11:00 -0700280
Masayuki Igawabfa07602015-01-20 18:47:17 +0900281 self.assertRaises(lib_exc.NotFound, self.client.delete_server,
Rohit Karajgidc300b22012-05-04 08:11:00 -0700282 sys.maxint + 1)
donald-ngo78bd7f52013-02-08 14:35:16 -0800283
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900284 @test.attr(type=['negative', 'gate'])
donald-ngo78bd7f52013-02-08 14:35:16 -0800285 def test_create_with_nonexistent_security_group(self):
286 # Create a server with a nonexistent security group
donald-ngo18edb812013-02-22 11:37:15 -0800287
288 security_groups = [{'name': 'does_not_exist'}]
Masayuki Igawa4b29e472015-02-16 10:41:54 +0900289 self.assertRaises(lib_exc.BadRequest,
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900290 self.create_test_server,
donald-ngo18edb812013-02-22 11:37:15 -0800291 security_groups=security_groups)
hi2suresh063acbc2013-02-20 09:32:03 +0000292
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900293 @test.attr(type=['negative', 'gate'])
hi2suresh063acbc2013-02-20 09:32:03 +0000294 def test_get_non_existent_server(self):
295 # Get a non existent server details
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900296 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900297 self.assertRaises(lib_exc.NotFound, self.client.get_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900298 nonexistent_server)
Sean Daguee623f752013-02-27 14:52:15 -0500299
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900300 @test.attr(type=['negative', 'gate'])
Anju Tiwari6c336162013-08-08 12:21:02 +0530301 def test_stop_non_existent_server(self):
302 # Stop a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900303 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900304 self.assertRaises(lib_exc.NotFound, self.servers_client.stop,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900305 nonexistent_server)
Anju Tiwari6c336162013-08-08 12:21:02 +0530306
Matt Riedemann992162e2014-03-24 09:11:06 -0700307 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
308 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900309 @test.attr(type=['negative', 'gate'])
Anju Tiwari6c336162013-08-08 12:21:02 +0530310 def test_pause_non_existent_server(self):
311 # pause a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900312 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900313 self.assertRaises(lib_exc.NotFound, self.client.pause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900314 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800315
Matt Riedemann992162e2014-03-24 09:11:06 -0700316 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
317 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900318 @test.attr(type=['negative', 'gate'])
LingxianKongb2ca96f2013-09-28 23:09:30 +0800319 def test_unpause_non_existent_server(self):
320 # unpause a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900321 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900322 self.assertRaises(lib_exc.NotFound, self.client.unpause_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900323 nonexistent_server)
LingxianKongb2ca96f2013-09-28 23:09:30 +0800324
Matt Riedemann992162e2014-03-24 09:11:06 -0700325 @testtools.skipUnless(CONF.compute_feature_enabled.pause,
326 'Pause is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900327 @test.attr(type=['negative', 'gate'])
LingxianKongb2ca96f2013-09-28 23:09:30 +0800328 def test_unpause_server_invalid_state(self):
329 # unpause an active server.
Masayuki Igawad9388762015-01-20 14:56:42 +0900330 self.assertRaises(lib_exc.Conflict,
LingxianKongb2ca96f2013-09-28 23:09:30 +0800331 self.client.unpause_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900332 self.server_id)
Anju Tiwari6c336162013-08-08 12:21:02 +0530333
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700334 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
335 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900336 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800337 def test_suspend_non_existent_server(self):
338 # suspend a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900339 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900340 self.assertRaises(lib_exc.NotFound, self.client.suspend_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900341 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800342
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700343 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
344 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900345 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800346 def test_suspend_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800347 # suspend a suspended server.
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900348 resp, _ = self.client.suspend_server(self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800349 self.assertEqual(202, resp.status)
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900350 self.client.wait_for_server_status(self.server_id, 'SUSPENDED')
Masayuki Igawad9388762015-01-20 14:56:42 +0900351 self.assertRaises(lib_exc.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800352 self.client.suspend_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900353 self.server_id)
Attila Fazekas305e65b2013-10-29 13:23:07 +0100354 self.client.resume_server(self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800355
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700356 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
357 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900358 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800359 def test_resume_non_existent_server(self):
360 # resume a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900361 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900362 self.assertRaises(lib_exc.NotFound, self.client.resume_server,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900363 nonexistent_server)
LingxianKong691a5702013-09-29 11:43:45 +0800364
Matt Riedemannf0cf6952014-03-24 09:08:52 -0700365 @testtools.skipUnless(CONF.compute_feature_enabled.suspend,
366 'Suspend is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900367 @test.attr(type=['negative', 'gate'])
LingxianKong691a5702013-09-29 11:43:45 +0800368 def test_resume_server_invalid_state(self):
LingxianKong691a5702013-09-29 11:43:45 +0800369 # resume an active server.
Masayuki Igawad9388762015-01-20 14:56:42 +0900370 self.assertRaises(lib_exc.Conflict,
LingxianKong691a5702013-09-29 11:43:45 +0800371 self.client.resume_server,
Ken'ichi Ohmichida306502013-10-08 23:44:55 +0900372 self.server_id)
LingxianKong691a5702013-09-29 11:43:45 +0800373
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900374 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900375 def test_get_console_output_of_non_existent_server(self):
376 # get the console output for a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900377 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900378 self.assertRaises(lib_exc.NotFound,
Ken'ichi Ohmichid90c0102013-10-13 23:55:31 +0900379 self.client.get_console_output,
380 nonexistent_server, 10)
381
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900382 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800383 def test_force_delete_nonexistent_server_id(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900384 # force-delete a non existent server
385 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900386 self.assertRaises(lib_exc.NotFound,
Lingxian Kongaecc1092013-10-03 16:18:46 +0800387 self.client.force_delete_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900388 nonexistent_server)
Lingxian Kongaecc1092013-10-03 16:18:46 +0800389
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900390 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800391 def test_restore_nonexistent_server_id(self):
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900392 # restore-delete a non existent server
393 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900394 self.assertRaises(lib_exc.NotFound,
Lingxian Kongaecc1092013-10-03 16:18:46 +0800395 self.client.restore_soft_deleted_server,
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900396 nonexistent_server)
Lingxian Kongaecc1092013-10-03 16:18:46 +0800397
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900398 @test.attr(type=['negative', 'gate'])
Lingxian Kongaecc1092013-10-03 16:18:46 +0800399 def test_restore_server_invalid_state(self):
400 # we can only restore-delete a server in 'soft-delete' state
Masayuki Igawad9388762015-01-20 14:56:42 +0900401 self.assertRaises(lib_exc.Conflict,
Lingxian Kongaecc1092013-10-03 16:18:46 +0800402 self.client.restore_soft_deleted_server,
403 self.server_id)
404
David Shrewsbury25f666f2014-07-22 12:17:59 -0400405 @testtools.skipUnless(CONF.compute_feature_enabled.shelve,
406 'Shelve is not available.')
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_non_existent_server(self):
409 # shelve a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900410 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900411 self.assertRaises(lib_exc.NotFound, self.client.shelve_server,
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900412 nonexistent_server)
413
David Shrewsbury25f666f2014-07-22 12:17:59 -0400414 @testtools.skipUnless(CONF.compute_feature_enabled.shelve,
415 'Shelve is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900416 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900417 def test_shelve_shelved_server(self):
418 # shelve a shelved server.
419 resp, server = self.client.shelve_server(self.server_id)
420 self.assertEqual(202, resp.status)
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900421
Matthew Treinishb0a78fc2014-01-29 16:49:12 +0000422 offload_time = CONF.compute.shelved_offload_time
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900423 if offload_time >= 0:
424 self.client.wait_for_server_status(self.server_id,
425 'SHELVED_OFFLOADED',
426 extra_timeout=offload_time)
427 else:
428 self.client.wait_for_server_status(self.server_id,
429 'SHELVED')
430
David Kranz0fb14292015-02-11 15:55:20 -0500431 server = self.client.get_server(self.server_id)
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900432 image_name = server['name'] + '-shelved'
433 params = {'name': image_name}
David Kranza5299eb2015-01-15 17:24:05 -0500434 images = self.images_client.list_images(params)
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900435 self.assertEqual(1, len(images))
436 self.assertEqual(image_name, images[0]['name'])
437
Masayuki Igawad9388762015-01-20 14:56:42 +0900438 self.assertRaises(lib_exc.Conflict,
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900439 self.client.shelve_server,
440 self.server_id)
441
Attila Fazekas305e65b2013-10-29 13:23:07 +0100442 self.client.unshelve_server(self.server_id)
443
David Shrewsbury25f666f2014-07-22 12:17:59 -0400444 @testtools.skipUnless(CONF.compute_feature_enabled.shelve,
445 'Shelve is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900446 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900447 def test_unshelve_non_existent_server(self):
448 # unshelve a non existent server
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900449 nonexistent_server = data_utils.rand_uuid()
Masayuki Igawabfa07602015-01-20 18:47:17 +0900450 self.assertRaises(lib_exc.NotFound, self.client.unshelve_server,
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900451 nonexistent_server)
452
David Shrewsbury25f666f2014-07-22 12:17:59 -0400453 @testtools.skipUnless(CONF.compute_feature_enabled.shelve,
454 'Shelve is not available.')
Ken'ichi Ohmichiaa702b02013-12-18 01:37:21 +0900455 @test.attr(type=['negative', 'gate'])
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900456 def test_unshelve_server_invalid_state(self):
457 # unshelve an active server.
Masayuki Igawad9388762015-01-20 14:56:42 +0900458 self.assertRaises(lib_exc.Conflict,
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900459 self.client.unshelve_server,
460 self.server_id)