blob: dc64c40ee9d59906790246db8b0604d24b6edc5d [file] [log] [blame]
ivan-zhub4b20602013-11-25 15:49:38 +08001# 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
17from tempest.common.utils import data_utils
ivan-zhuf0bf3012013-11-25 16:03:42 +080018from tempest import test
ivan-zhub4b20602013-11-25 15:49:38 +080019
20
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090021class ServersV3Test(base.BaseV3ComputeTest):
ivan-zhub4b20602013-11-25 15:49:38 +080022 _interface = 'json'
23
24 @classmethod
25 def setUpClass(cls):
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090026 super(ServersV3Test, cls).setUpClass()
ivan-zhub4b20602013-11-25 15:49:38 +080027 cls.client = cls.servers_client
28
29 def tearDown(self):
30 self.clear_servers()
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090031 super(ServersV3Test, self).tearDown()
ivan-zhub4b20602013-11-25 15:49:38 +080032
ivan-zhuf0bf3012013-11-25 16:03:42 +080033 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +080034 def test_create_server_with_admin_password(self):
35 # If an admin password is provided on server creation, the server's
36 # root password should be set to that password.
ivan-zhuf0bf3012013-11-25 16:03:42 +080037 resp, server = self.create_test_server(admin_password='testpassword')
ivan-zhub4b20602013-11-25 15:49:38 +080038
39 # Verify the password is set correctly in the response
ivan-zhuf0bf3012013-11-25 16:03:42 +080040 self.assertEqual('testpassword', server['admin_password'])
ivan-zhub4b20602013-11-25 15:49:38 +080041
ivan-zhuf0bf3012013-11-25 16:03:42 +080042 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +080043 def test_create_with_existing_server_name(self):
44 # Creating a server with a name that already exists is allowed
45
46 # TODO(sdague): clear out try, we do cleanup one layer up
47 server_name = data_utils.rand_name('server')
48 resp, server = self.create_test_server(name=server_name,
49 wait_until='ACTIVE')
50 id1 = server['id']
51 resp, server = self.create_test_server(name=server_name,
52 wait_until='ACTIVE')
53 id2 = server['id']
54 self.assertNotEqual(id1, id2, "Did not create a new server")
55 resp, server = self.client.get_server(id1)
56 name1 = server['name']
57 resp, server = self.client.get_server(id2)
58 name2 = server['name']
59 self.assertEqual(name1, name2)
60
ivan-zhuf0bf3012013-11-25 16:03:42 +080061 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +080062 def test_create_specify_keypair(self):
63 # Specify a keypair while creating a server
64
65 key_name = data_utils.rand_name('key')
66 resp, keypair = self.keypairs_client.create_keypair(key_name)
67 resp, body = self.keypairs_client.list_keypairs()
68 resp, server = self.create_test_server(key_name=key_name)
69 self.assertEqual('202', resp['status'])
70 self.client.wait_for_server_status(server['id'], 'ACTIVE')
71 resp, server = self.client.get_server(server['id'])
72 self.assertEqual(key_name, server['key_name'])
73
ivan-zhuf0bf3012013-11-25 16:03:42 +080074 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +080075 def test_update_server_name(self):
76 # The server name should be changed to the the provided value
77 resp, server = self.create_test_server(wait_until='ACTIVE')
78
79 # Update the server with a new name
80 resp, server = self.client.update_server(server['id'],
81 name='newname')
82 self.assertEqual(200, resp.status)
83 self.client.wait_for_server_status(server['id'], 'ACTIVE')
84
85 # Verify the name of the server has changed
86 resp, server = self.client.get_server(server['id'])
87 self.assertEqual('newname', server['name'])
88
ivan-zhuf0bf3012013-11-25 16:03:42 +080089 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +080090 def test_update_access_server_address(self):
91 # The server's access addresses should reflect the provided values
92 resp, server = self.create_test_server(wait_until='ACTIVE')
93
94 # Update the IPv4 and IPv6 access addresses
95 resp, body = self.client.update_server(server['id'],
ivan-zhuf0bf3012013-11-25 16:03:42 +080096 access_ip_v4='1.1.1.1',
97 access_ip_v6='::babe:202:202')
ivan-zhub4b20602013-11-25 15:49:38 +080098 self.assertEqual(200, resp.status)
99 self.client.wait_for_server_status(server['id'], 'ACTIVE')
100
101 # Verify the access addresses have been updated
102 resp, server = self.client.get_server(server['id'])
ivan-zhuf0bf3012013-11-25 16:03:42 +0800103 self.assertEqual('1.1.1.1', server['os-access-ips:access_ip_v4'])
104 self.assertEqual('::babe:202:202',
105 server['os-access-ips:access_ip_v6'])
ivan-zhub4b20602013-11-25 15:49:38 +0800106
ivan-zhuf0bf3012013-11-25 16:03:42 +0800107 @test.attr(type='gate')
ChenZheng0868b902014-01-10 11:34:25 +0800108 def test_delete_server_while_in_shutoff_state(self):
109 # Delete a server while it's VM state is Shutoff
110 resp, server = self.create_test_server(wait_until='ACTIVE')
111 resp, body = self.client.stop(server['id'])
112 self.client.wait_for_server_status(server['id'], 'SHUTOFF')
113 resp, _ = self.client.delete_server(server['id'])
114 self.assertEqual('204', resp['status'])
115
116 @test.attr(type='gate')
117 def test_delete_server_while_in_pause_state(self):
118 # Delete a server while it's VM state is Pause
119 resp, server = self.create_test_server(wait_until='ACTIVE')
120 resp, body = self.client.pause_server(server['id'])
121 self.client.wait_for_server_status(server['id'], 'PAUSED')
122 resp, _ = self.client.delete_server(server['id'])
123 self.assertEqual('204', resp['status'])
124
125 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +0800126 def test_delete_server_while_in_building_state(self):
127 # Delete a server while it's VM state is Building
128 resp, server = self.create_test_server(wait_until='BUILD')
129 resp, _ = self.client.delete_server(server['id'])
130 self.assertEqual('204', resp['status'])
131
ivan-zhuf0bf3012013-11-25 16:03:42 +0800132 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +0800133 def test_delete_active_server(self):
134 # Delete a server while it's VM state is Active
135 resp, server = self.create_test_server(wait_until='ACTIVE')
136 resp, _ = self.client.delete_server(server['id'])
137 self.assertEqual('204', resp['status'])
138
ivan-zhuf0bf3012013-11-25 16:03:42 +0800139 @test.attr(type='gate')
ivan-zhub4b20602013-11-25 15:49:38 +0800140 def test_create_server_with_ipv6_addr_only(self):
141 # Create a server without an IPv4 address(only IPv6 address).
ivan-zhuf0bf3012013-11-25 16:03:42 +0800142 resp, server = self.create_test_server(access_ip_v6='2001:2001::3')
ivan-zhub4b20602013-11-25 15:49:38 +0800143 self.assertEqual('202', resp['status'])
144 self.client.wait_for_server_status(server['id'], 'ACTIVE')
145 resp, server = self.client.get_server(server['id'])
ivan-zhuf0bf3012013-11-25 16:03:42 +0800146 self.assertEqual('2001:2001::3', server['os-access-ips:access_ip_v6'])