blob: 4796e86f8afcd43f0946155fc6ceaddbd44d6617 [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
Sean Dagueab277ad2013-03-15 15:59:06 -040031 def tearDown(self):
32 self.clear_servers()
33 super(ServersTestJSON, self).tearDown()
34
Daryl Wallecked97dca2012-07-04 23:25:45 -050035 @attr(type='positive')
Daryl Walleck1465d612011-11-02 02:22:15 -050036 def test_create_server_with_admin_password(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050037 # If an admin password is provided on server creation, the server's
38 # root password should be set to that password.
Sean Dagueab277ad2013-03-15 15:59:06 -040039 resp, server = self.create_server(adminPass='testpassword')
Daryl Walleck1465d612011-11-02 02:22:15 -050040
Sean Dagueab277ad2013-03-15 15:59:06 -040041 # Verify the password is set correctly in the response
42 self.assertEqual('testpassword', server['adminPass'])
Daryl Walleck1465d612011-11-02 02:22:15 -050043
Rohit Karajgidc300b22012-05-04 08:11:00 -070044 def test_create_with_existing_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050045 # Creating a server with a name that already exists is allowed
Rohit Karajgidc300b22012-05-04 08:11:00 -070046
Sean Dague22897e12013-02-25 17:54:09 -050047 # TODO(sdague): clear out try, we do cleanup one layer up
Sean Dagueab277ad2013-03-15 15:59:06 -040048 server_name = rand_name('server')
49 resp, server = self.create_server(name=server_name,
50 wait_until='ACTIVE')
51 id1 = server['id']
52 resp, server = self.create_server(name=server_name,
53 wait_until='ACTIVE')
54 id2 = server['id']
55 self.assertNotEqual(id1, id2, "Did not create a new server")
56 resp, server = self.client.get_server(id1)
57 name1 = server['name']
58 resp, server = self.client.get_server(id2)
59 name2 = server['name']
60 self.assertEqual(name1, name2)
Rohit Karajgidc300b22012-05-04 08:11:00 -070061
Daryl Wallecked97dca2012-07-04 23:25:45 -050062 @attr(type='positive')
Rohit Karajgidc300b22012-05-04 08:11:00 -070063 def test_create_specify_keypair(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050064 # Specify a keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -070065
Sean Dagueab277ad2013-03-15 15:59:06 -040066 key_name = rand_name('key')
67 resp, keypair = self.keypairs_client.create_keypair(key_name)
68 resp, body = self.keypairs_client.list_keypairs()
69 resp, server = self.create_server(key_name=key_name)
70 self.assertEqual('202', resp['status'])
71 self.client.wait_for_server_status(server['id'], 'ACTIVE')
72 resp, server = self.client.get_server(server['id'])
73 self.assertEqual(key_name, server['key_name'])
Rohit Karajgidc300b22012-05-04 08:11:00 -070074
Daryl Wallecked97dca2012-07-04 23:25:45 -050075 @attr(type='positive')
Daryl Walleck1465d612011-11-02 02:22:15 -050076 def test_update_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050077 # The server name should be changed to the the provided value
Sean Dagueab277ad2013-03-15 15:59:06 -040078 resp, server = self.create_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050079
Sean Dagueab277ad2013-03-15 15:59:06 -040080 # Update the server with a new name
81 resp, server = self.client.update_server(server['id'],
82 name='newname')
83 self.assertEquals(200, resp.status)
84 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050085
Sean Dagueab277ad2013-03-15 15:59:06 -040086 # Verify the name of the server has changed
87 resp, server = self.client.get_server(server['id'])
88 self.assertEqual('newname', server['name'])
Daryl Walleck1465d612011-11-02 02:22:15 -050089
Daryl Wallecked97dca2012-07-04 23:25:45 -050090 @attr(type='positive')
Daryl Walleck1465d612011-11-02 02:22:15 -050091 def test_update_access_server_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050092 # The server's access addresses should reflect the provided values
Sean Dagueab277ad2013-03-15 15:59:06 -040093 resp, server = self.create_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050094
Sean Dagueab277ad2013-03-15 15:59:06 -040095 # Update the IPv4 and IPv6 access addresses
96 resp, body = self.client.update_server(server['id'],
97 accessIPv4='1.1.1.1',
98 accessIPv6='::babe:202:202')
99 self.assertEqual(200, resp.status)
100 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500101
Sean Dagueab277ad2013-03-15 15:59:06 -0400102 # Verify the access addresses have been updated
103 resp, server = self.client.get_server(server['id'])
104 self.assertEqual('1.1.1.1', server['accessIPv4'])
105 self.assertEqual('::babe:202:202', server['accessIPv6'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700106
107 def test_delete_server_while_in_building_state(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500108 # Delete a server while it's VM state is Building
Sean Dague22897e12013-02-25 17:54:09 -0500109 resp, server = self.create_server(wait_until='BUILD')
Rohit Karajgidc300b22012-05-04 08:11:00 -0700110 resp, _ = self.client.delete_server(server['id'])
111 self.assertEqual('204', resp['status'])
Dan Smith011164b2012-08-14 09:06:06 -0700112
113
Attila Fazekas19044d52013-02-16 07:35:06 +0100114class ServersTestXML(ServersTestJSON):
115 _interface = 'xml'