blob: 7167a8bc2a3ec81b491e4c81b054c1b331e75790 [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
Sean Dague1937d092013-05-17 16:36:38 -040016from tempest.api.compute import base
Masayuki Igawa259c1132013-10-31 17:48:44 +090017from tempest.common.utils import data_utils
Chris Yeoh9465b0b2013-02-09 22:19:15 +103018from tempest.test import attr
Daryl Walleck1465d612011-11-02 02:22:15 -050019
20
ivan-zhuf2b00502013-10-18 10:06:52 +080021class ServersTestJSON(base.BaseV2ComputeTest):
Attila Fazekas19044d52013-02-16 07:35:06 +010022 _interface = 'json'
23
24 @classmethod
25 def setUpClass(cls):
26 super(ServersTestJSON, cls).setUpClass()
27 cls.client = cls.servers_client
Daryl Walleck1465d612011-11-02 02:22:15 -050028
Sean Dagueab277ad2013-03-15 15:59:06 -040029 def tearDown(self):
30 self.clear_servers()
31 super(ServersTestJSON, self).tearDown()
32
Giulio Fidenteba3985a2013-05-29 01:46:36 +020033 @attr(type='gate')
Daryl Walleck1465d612011-11-02 02:22:15 -050034 def test_create_server_with_admin_password(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050035 # If an admin password is provided on server creation, the server's
36 # root password should be set to that password.
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090037 resp, server = self.create_test_server(adminPass='testpassword')
Daryl Walleck1465d612011-11-02 02:22:15 -050038
Sean Dagueab277ad2013-03-15 15:59:06 -040039 # Verify the password is set correctly in the response
40 self.assertEqual('testpassword', server['adminPass'])
Daryl Walleck1465d612011-11-02 02:22:15 -050041
Giampaolo Lauriae9c77022013-05-22 01:23:58 -040042 @attr(type='gate')
Rohit Karajgidc300b22012-05-04 08:11:00 -070043 def test_create_with_existing_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050044 # Creating a server with a name that already exists is allowed
Rohit Karajgidc300b22012-05-04 08:11:00 -070045
Sean Dague22897e12013-02-25 17:54:09 -050046 # TODO(sdague): clear out try, we do cleanup one layer up
Masayuki Igawa259c1132013-10-31 17:48:44 +090047 server_name = data_utils.rand_name('server')
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090048 resp, server = self.create_test_server(name=server_name,
49 wait_until='ACTIVE')
Sean Dagueab277ad2013-03-15 15:59:06 -040050 id1 = server['id']
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090051 resp, server = self.create_test_server(name=server_name,
52 wait_until='ACTIVE')
Sean Dagueab277ad2013-03-15 15:59:06 -040053 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)
Rohit Karajgidc300b22012-05-04 08:11:00 -070060
Giulio Fidenteba3985a2013-05-29 01:46:36 +020061 @attr(type='gate')
Rohit Karajgidc300b22012-05-04 08:11:00 -070062 def test_create_specify_keypair(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050063 # Specify a keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -070064
Masayuki Igawa259c1132013-10-31 17:48:44 +090065 key_name = data_utils.rand_name('key')
Sean Dagueab277ad2013-03-15 15:59:06 -040066 resp, keypair = self.keypairs_client.create_keypair(key_name)
67 resp, body = self.keypairs_client.list_keypairs()
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090068 resp, server = self.create_test_server(key_name=key_name)
Sean Dagueab277ad2013-03-15 15:59:06 -040069 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'])
Rohit Karajgidc300b22012-05-04 08:11:00 -070073
Giulio Fidenteba3985a2013-05-29 01:46:36 +020074 @attr(type='gate')
Daryl Walleck1465d612011-11-02 02:22:15 -050075 def test_update_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050076 # The server name should be changed to the the provided value
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090077 resp, server = self.create_test_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050078
Sean Dagueab277ad2013-03-15 15:59:06 -040079 # Update the server with a new name
80 resp, server = self.client.update_server(server['id'],
81 name='newname')
Chang Bo Guofc77e932013-09-16 17:38:26 -070082 self.assertEqual(200, resp.status)
Sean Dagueab277ad2013-03-15 15:59:06 -040083 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050084
Sean Dagueab277ad2013-03-15 15:59:06 -040085 # Verify the name of the server has changed
86 resp, server = self.client.get_server(server['id'])
87 self.assertEqual('newname', server['name'])
Daryl Walleck1465d612011-11-02 02:22:15 -050088
Giulio Fidenteba3985a2013-05-29 01:46:36 +020089 @attr(type='gate')
Daryl Walleck1465d612011-11-02 02:22:15 -050090 def test_update_access_server_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050091 # The server's access addresses should reflect the provided values
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090092 resp, server = self.create_test_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050093
Sean Dagueab277ad2013-03-15 15:59:06 -040094 # Update the IPv4 and IPv6 access addresses
95 resp, body = self.client.update_server(server['id'],
96 accessIPv4='1.1.1.1',
97 accessIPv6='::babe:202:202')
98 self.assertEqual(200, resp.status)
99 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500100
Sean Dagueab277ad2013-03-15 15:59:06 -0400101 # Verify the access addresses have been updated
102 resp, server = self.client.get_server(server['id'])
103 self.assertEqual('1.1.1.1', server['accessIPv4'])
104 self.assertEqual('::babe:202:202', server['accessIPv6'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700105
Giampaolo Lauriae9c77022013-05-22 01:23:58 -0400106 @attr(type='gate')
jun xie0ea79842013-09-26 21:57:44 +0800107 def test_create_server_with_ipv6_addr_only(self):
108 # Create a server without an IPv4 address(only IPv6 address).
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +0900109 resp, server = self.create_test_server(accessIPv6='2001:2001::3')
jun xie0ea79842013-09-26 21:57:44 +0800110 self.assertEqual('202', resp['status'])
111 self.client.wait_for_server_status(server['id'], 'ACTIVE')
112 resp, server = self.client.get_server(server['id'])
113 self.assertEqual('2001:2001::3', server['accessIPv6'])
114
Dan Smith011164b2012-08-14 09:06:06 -0700115
Attila Fazekas19044d52013-02-16 07:35:06 +0100116class ServersTestXML(ServersTestJSON):
117 _interface = 'xml'