blob: d72476db71fc25e18d10e45efd3cfc0246500cfd [file] [log] [blame]
ivan-zhub4b20602013-11-25 15:49:38 +08001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack Foundation
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
18from tempest.api.compute import base
19from tempest.common.utils import data_utils
20from tempest.test import attr
21
22
23class ServersTestJSON(base.BaseV2ComputeTest):
24 _interface = 'json'
25
26 @classmethod
27 def setUpClass(cls):
28 super(ServersTestJSON, cls).setUpClass()
29 cls.client = cls.servers_client
30
31 def tearDown(self):
32 self.clear_servers()
33 super(ServersTestJSON, self).tearDown()
34
35 @attr(type='gate')
36 def test_create_server_with_admin_password(self):
37 # If an admin password is provided on server creation, the server's
38 # root password should be set to that password.
39 resp, server = self.create_test_server(adminPass='testpassword')
40
41 # Verify the password is set correctly in the response
42 self.assertEqual('testpassword', server['adminPass'])
43
44 @attr(type='gate')
45 def test_create_with_existing_server_name(self):
46 # Creating a server with a name that already exists is allowed
47
48 # TODO(sdague): clear out try, we do cleanup one layer up
49 server_name = data_utils.rand_name('server')
50 resp, server = self.create_test_server(name=server_name,
51 wait_until='ACTIVE')
52 id1 = server['id']
53 resp, server = self.create_test_server(name=server_name,
54 wait_until='ACTIVE')
55 id2 = server['id']
56 self.assertNotEqual(id1, id2, "Did not create a new server")
57 resp, server = self.client.get_server(id1)
58 name1 = server['name']
59 resp, server = self.client.get_server(id2)
60 name2 = server['name']
61 self.assertEqual(name1, name2)
62
63 @attr(type='gate')
64 def test_create_specify_keypair(self):
65 # Specify a keypair while creating a server
66
67 key_name = data_utils.rand_name('key')
68 resp, keypair = self.keypairs_client.create_keypair(key_name)
69 resp, body = self.keypairs_client.list_keypairs()
70 resp, server = self.create_test_server(key_name=key_name)
71 self.assertEqual('202', resp['status'])
72 self.client.wait_for_server_status(server['id'], 'ACTIVE')
73 resp, server = self.client.get_server(server['id'])
74 self.assertEqual(key_name, server['key_name'])
75
76 @attr(type='gate')
77 def test_update_server_name(self):
78 # The server name should be changed to the the provided value
79 resp, server = self.create_test_server(wait_until='ACTIVE')
80
81 # Update the server with a new name
82 resp, server = self.client.update_server(server['id'],
83 name='newname')
84 self.assertEqual(200, resp.status)
85 self.client.wait_for_server_status(server['id'], 'ACTIVE')
86
87 # Verify the name of the server has changed
88 resp, server = self.client.get_server(server['id'])
89 self.assertEqual('newname', server['name'])
90
91 @attr(type='gate')
92 def test_update_access_server_address(self):
93 # The server's access addresses should reflect the provided values
94 resp, server = self.create_test_server(wait_until='ACTIVE')
95
96 # Update the IPv4 and IPv6 access addresses
97 resp, body = self.client.update_server(server['id'],
98 accessIPv4='1.1.1.1',
99 accessIPv6='::babe:202:202')
100 self.assertEqual(200, resp.status)
101 self.client.wait_for_server_status(server['id'], 'ACTIVE')
102
103 # Verify the access addresses have been updated
104 resp, server = self.client.get_server(server['id'])
105 self.assertEqual('1.1.1.1', server['accessIPv4'])
106 self.assertEqual('::babe:202:202', server['accessIPv6'])
107
108 @attr(type='gate')
109 def test_delete_server_while_in_building_state(self):
110 # Delete a server while it's VM state is Building
111 resp, server = self.create_test_server(wait_until='BUILD')
112 resp, _ = self.client.delete_server(server['id'])
113 self.assertEqual('204', resp['status'])
114
115 @attr(type='gate')
116 def test_delete_active_server(self):
117 # Delete a server while it's VM state is Active
118 resp, server = self.create_test_server(wait_until='ACTIVE')
119 resp, _ = self.client.delete_server(server['id'])
120 self.assertEqual('204', resp['status'])
121
122 @attr(type='gate')
123 def test_create_server_with_ipv6_addr_only(self):
124 # Create a server without an IPv4 address(only IPv6 address).
125 resp, server = self.create_test_server(accessIPv6='2001:2001::3')
126 self.assertEqual('202', resp['status'])
127 self.client.wait_for_server_status(server['id'], 'ACTIVE')
128 resp, server = self.client.get_server(server['id'])
129 self.assertEqual('2001:2001::3', server['accessIPv6'])
130
131
132class ServersTestXML(ServersTestJSON):
133 _interface = 'xml'