blob: ec40ce034d8a8644097354c7ee7453d5807ee1b9 [file] [log] [blame]
Ken'ichi Ohmichi0d4f9882014-02-20 23:51:21 +09001# Copyright 2012 OpenStack Foundation
2# 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
16from tempest.api.compute import base
Ken'ichi Ohmichi09a56842014-02-21 16:49:57 +090017from tempest import config
Ken'ichi Ohmichi0d4f9882014-02-20 23:51:21 +090018from tempest import test
19
Ken'ichi Ohmichi09a56842014-02-21 16:49:57 +090020CONF = config.CONF
21
Ken'ichi Ohmichi0d4f9882014-02-20 23:51:21 +090022
23class DeleteServersTestJSON(base.BaseV2ComputeTest):
24 # NOTE: Server creations of each test class should be under 10
25 # for preventing "Quota exceeded for instances"
26 _interface = 'json'
27
28 @classmethod
29 def setUpClass(cls):
30 super(DeleteServersTestJSON, cls).setUpClass()
31 cls.client = cls.servers_client
32
33 @test.attr(type='gate')
34 def test_delete_server_while_in_building_state(self):
35 # Delete a server while it's VM state is Building
36 resp, server = self.create_test_server(wait_until='BUILD')
37 resp, _ = self.client.delete_server(server['id'])
38 self.assertEqual('204', resp['status'])
39
40 @test.attr(type='gate')
41 def test_delete_active_server(self):
42 # Delete a server while it's VM state is Active
43 resp, server = self.create_test_server(wait_until='ACTIVE')
44 resp, _ = self.client.delete_server(server['id'])
45 self.assertEqual('204', resp['status'])
46
47 @test.attr(type='gate')
48 def test_delete_server_while_in_shutoff_state(self):
49 # Delete a server while it's VM state is Shutoff
50 resp, server = self.create_test_server(wait_until='ACTIVE')
51 resp, body = self.client.stop(server['id'])
52 self.client.wait_for_server_status(server['id'], 'SHUTOFF')
53 resp, _ = self.client.delete_server(server['id'])
54 self.assertEqual('204', resp['status'])
55
56 @test.attr(type='gate')
57 def test_delete_server_while_in_pause_state(self):
58 # Delete a server while it's VM state is Pause
59 resp, server = self.create_test_server(wait_until='ACTIVE')
60 resp, body = self.client.pause_server(server['id'])
61 self.client.wait_for_server_status(server['id'], 'PAUSED')
62 resp, _ = self.client.delete_server(server['id'])
63 self.assertEqual('204', resp['status'])
64
Ken'ichi Ohmichi09a56842014-02-21 16:49:57 +090065 @test.attr(type='gate')
66 def test_delete_server_while_in_shelved_state(self):
67 # Delete a server while it's VM state is Shelved
68 resp, server = self.create_test_server(wait_until='ACTIVE')
69 resp, body = self.client.shelve_server(server['id'])
70 self.assertEqual(202, resp.status)
71
72 offload_time = CONF.compute.shelved_offload_time
73 if offload_time >= 0:
74 self.client.wait_for_server_status(server['id'],
75 'SHELVED_OFFLOADED',
76 extra_timeout=offload_time)
77 else:
78 self.client.wait_for_server_status(server['id'],
79 'SHELVED')
80 resp, _ = self.client.delete_server(server['id'])
81 self.assertEqual('204', resp['status'])
82
Ken'ichi Ohmichi0d4f9882014-02-20 23:51:21 +090083
Ken'ichi Ohmichi3c9c3c32014-02-24 22:49:11 +090084class DeleteServersAdminTestJSON(base.BaseV2ComputeAdminTest):
85 # NOTE: Server creations of each test class should be under 10
86 # for preventing "Quota exceeded for instances".
87 _interface = 'json'
88
89 @classmethod
90 def setUpClass(cls):
91 super(DeleteServersAdminTestJSON, cls).setUpClass()
92 cls.non_admin_client = cls.servers_client
93 cls.admin_client = cls.os_adm.servers_client
94
95 @test.attr(type='gate')
96 def test_delete_server_while_in_error_state(self):
97 # Delete a server while it's VM state is error
98 resp, server = self.create_test_server(wait_until='ACTIVE')
99 resp, body = self.admin_client.reset_state(server['id'], state='error')
100 self.assertEqual(202, resp.status)
101 # Verify server's state
102 resp, server = self.non_admin_client.get_server(server['id'])
103 self.assertEqual(server['status'], 'ERROR')
104 resp, _ = self.non_admin_client.delete_server(server['id'])
105 self.assertEqual('204', resp['status'])
106
107 @test.attr(type='gate')
108 def test_admin_delete_servers_of_others(self):
109 # Administrator can delete servers of others
110 resp, server = self.create_test_server(wait_until='ACTIVE')
111 resp, _ = self.admin_client.delete_server(server['id'])
112 self.assertEqual('204', resp['status'])
113 self.servers_client.wait_for_server_termination(server['id'])
114
115
Ken'ichi Ohmichi0d4f9882014-02-20 23:51:21 +0900116class DeleteServersTestXML(DeleteServersTestJSON):
117 _interface = 'xml'
Ken'ichi Ohmichi3c9c3c32014-02-24 22:49:11 +0900118
119
120class DeleteServersAdminTestXML(DeleteServersAdminTestJSON):
121 _interface = 'xml'