blob: a8d28df721ca20c0a2f233e9e67ca8e851a4e567 [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
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
Daryl Wallecked8bef32011-12-05 23:02:08 -060018from tempest.common.utils.data_utils import rand_name
Chris Yeoh9465b0b2013-02-09 22:19:15 +103019from tempest.test import attr
Dan Smith011164b2012-08-14 09:06:06 -070020from tempest.tests.compute import base
Daryl Walleck1465d612011-11-02 02:22:15 -050021
22
Attila Fazekas19044d52013-02-16 07:35:06 +010023class ServersTestJSON(base.BaseComputeTest):
24 _interface = 'json'
25
26 @classmethod
27 def setUpClass(cls):
28 super(ServersTestJSON, cls).setUpClass()
29 cls.client = cls.servers_client
Daryl Walleck1465d612011-11-02 02:22:15 -050030
Daryl Wallecked97dca2012-07-04 23:25:45 -050031 @attr(type='positive')
Daryl Walleck1465d612011-11-02 02:22:15 -050032 def test_create_server_with_admin_password(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050033 # If an admin password is provided on server creation, the server's
34 # root password should be set to that password.
Daryl Walleck1465d612011-11-02 02:22:15 -050035
saradpatele81028a2012-05-02 22:36:06 -070036 try:
David Kranzee3cc8d2012-12-03 09:23:09 -050037 server = None
Sean Dague22897e12013-02-25 17:54:09 -050038 resp, server = self.create_server(adminPass='testpassword')
Daryl Walleck1465d612011-11-02 02:22:15 -050039
saradpatele81028a2012-05-02 22:36:06 -070040 #Verify the password is set correctly in the response
41 self.assertEqual('testpassword', server['adminPass'])
Daryl Walleck1465d612011-11-02 02:22:15 -050042
Daryl Walleck1465d612011-11-02 02:22:15 -050043 #Teardown
saradpatele81028a2012-05-02 22:36:06 -070044 finally:
David Kranzee3cc8d2012-12-03 09:23:09 -050045 if server:
46 self.client.delete_server(server['id'])
Daryl Walleck1465d612011-11-02 02:22:15 -050047
Rohit Karajgidc300b22012-05-04 08:11:00 -070048 def test_create_with_existing_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050049 # Creating a server with a name that already exists is allowed
Rohit Karajgidc300b22012-05-04 08:11:00 -070050
Sean Dague22897e12013-02-25 17:54:09 -050051 # TODO(sdague): clear out try, we do cleanup one layer up
Rohit Karajgidc300b22012-05-04 08:11:00 -070052 try:
David Kranzee3cc8d2012-12-03 09:23:09 -050053 id1 = None
54 id2 = None
Rohit Karajgidc300b22012-05-04 08:11:00 -070055 server_name = rand_name('server')
Sean Dague22897e12013-02-25 17:54:09 -050056 resp, server = self.create_server(name=server_name,
57 wait_until='ACTIVE')
Rohit Karajgidc300b22012-05-04 08:11:00 -070058 id1 = server['id']
Sean Dague22897e12013-02-25 17:54:09 -050059 resp, server = self.create_server(name=server_name,
60 wait_until='ACTIVE')
Rohit Karajgidc300b22012-05-04 08:11:00 -070061 id2 = server['id']
62 self.assertNotEqual(id1, id2, "Did not create a new server")
63 resp, server = self.client.get_server(id1)
64 name1 = server['name']
65 resp, server = self.client.get_server(id2)
66 name2 = server['name']
67 self.assertEqual(name1, name2)
68 finally:
69 for server_id in (id1, id2):
70 if server_id:
71 self.client.delete_server(server_id)
72
Daryl Wallecked97dca2012-07-04 23:25:45 -050073 @attr(type='positive')
Rohit Karajgidc300b22012-05-04 08:11:00 -070074 def test_create_specify_keypair(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050075 # Specify a keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -070076
77 try:
David Kranzee3cc8d2012-12-03 09:23:09 -050078 server = None
Rohit Karajgidc300b22012-05-04 08:11:00 -070079 key_name = rand_name('key')
80 resp, keypair = self.keypairs_client.create_keypair(key_name)
81 resp, body = self.keypairs_client.list_keypairs()
Sean Dague22897e12013-02-25 17:54:09 -050082 resp, server = self.create_server(key_name=key_name)
Rohit Karajgidc300b22012-05-04 08:11:00 -070083 self.assertEqual('202', resp['status'])
84 self.client.wait_for_server_status(server['id'], 'ACTIVE')
85 resp, server = self.client.get_server(server['id'])
86 self.assertEqual(key_name, server['key_name'])
87 finally:
88 if server:
89 self.client.delete_server(server['id'])
90
Daryl Wallecked97dca2012-07-04 23:25:45 -050091 @attr(type='positive')
Daryl Walleck1465d612011-11-02 02:22:15 -050092 def test_update_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050093 # The server name should be changed to the the provided value
saradpatele81028a2012-05-02 22:36:06 -070094 try:
David Kranzee3cc8d2012-12-03 09:23:09 -050095 server = None
Sean Dague22897e12013-02-25 17:54:09 -050096 resp, server = self.create_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050097
saradpatele81028a2012-05-02 22:36:06 -070098 #Update the server with a new name
99 resp, server = self.client.update_server(server['id'],
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800100 name='newname')
saradpatele81028a2012-05-02 22:36:06 -0700101 self.assertEquals(200, resp.status)
102 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500103
saradpatele81028a2012-05-02 22:36:06 -0700104 #Verify the name of the server has changed
105 resp, server = self.client.get_server(server['id'])
106 self.assertEqual('newname', server['name'])
Daryl Walleck1465d612011-11-02 02:22:15 -0500107
108 #Teardown
saradpatele81028a2012-05-02 22:36:06 -0700109 finally:
David Kranzee3cc8d2012-12-03 09:23:09 -0500110 if server:
111 self.client.delete_server(server['id'])
Daryl Walleck1465d612011-11-02 02:22:15 -0500112
Daryl Wallecked97dca2012-07-04 23:25:45 -0500113 @attr(type='positive')
Daryl Walleck1465d612011-11-02 02:22:15 -0500114 def test_update_access_server_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500115 # The server's access addresses should reflect the provided values
saradpatele81028a2012-05-02 22:36:06 -0700116 try:
David Kranzee3cc8d2012-12-03 09:23:09 -0500117 server = None
Sean Dague22897e12013-02-25 17:54:09 -0500118 resp, server = self.create_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500119
saradpatele81028a2012-05-02 22:36:06 -0700120 #Update the IPv4 and IPv6 access addresses
121 resp, body = self.client.update_server(server['id'],
Zhongyue Luo79d8d362012-09-25 13:49:27 +0800122 accessIPv4='1.1.1.1',
Sean Dagueab3d5d42013-01-18 19:10:14 -0500123 accessIPv6='::babe:202:202')
saradpatele81028a2012-05-02 22:36:06 -0700124 self.assertEqual(200, resp.status)
125 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500126
saradpatele81028a2012-05-02 22:36:06 -0700127 #Verify the access addresses have been updated
128 resp, server = self.client.get_server(server['id'])
129 self.assertEqual('1.1.1.1', server['accessIPv4'])
Sean Dagueab3d5d42013-01-18 19:10:14 -0500130 self.assertEqual('::babe:202:202', server['accessIPv6'])
Daryl Walleck1465d612011-11-02 02:22:15 -0500131
132 #Teardown
saradpatele81028a2012-05-02 22:36:06 -0700133 finally:
David Kranzee3cc8d2012-12-03 09:23:09 -0500134 if server:
135 self.client.delete_server(server['id'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700136
137 def test_delete_server_while_in_building_state(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500138 # Delete a server while it's VM state is Building
Sean Dague22897e12013-02-25 17:54:09 -0500139 resp, server = self.create_server(wait_until='BUILD')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700140 resp, _ = self.client.delete_server(server['id'])
141 self.assertEqual('204', resp['status'])
Dan Smith011164b2012-08-14 09:06:06 -0700142
143
Attila Fazekas19044d52013-02-16 07:35:06 +0100144class ServersTestXML(ServersTestJSON):
145 _interface = 'xml'