blob: 624d9c25ee72274e8de3056c7e4b6b346c4e29f9 [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
Yuiko Takadae9999d62014-03-06 09:22:54 +000018from tempest import test
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
23 @classmethod
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010024 def resource_setup(cls):
25 super(ServersTestJSON, cls).resource_setup()
Attila Fazekas19044d52013-02-16 07:35:06 +010026 cls.client = cls.servers_client
Daryl Walleck1465d612011-11-02 02:22:15 -050027
Sean Dagueab277ad2013-03-15 15:59:06 -040028 def tearDown(self):
29 self.clear_servers()
30 super(ServersTestJSON, self).tearDown()
31
Yuiko Takadae9999d62014-03-06 09:22:54 +000032 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080033 @test.idempotent_id('b92d5ec7-b1dd-44a2-87e4-45e888c46ef0')
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.
David Kranz0fb14292015-02-11 15:55:20 -050037 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
Yuiko Takadae9999d62014-03-06 09:22:54 +000042 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080043 @test.idempotent_id('8fea6be7-065e-47cf-89b8-496e6f96c699')
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
Masayuki Igawa259c1132013-10-31 17:48:44 +090048 server_name = data_utils.rand_name('server')
David Kranz0fb14292015-02-11 15:55:20 -050049 server = self.create_test_server(name=server_name,
50 wait_until='ACTIVE')
Sean Dagueab277ad2013-03-15 15:59:06 -040051 id1 = server['id']
David Kranz0fb14292015-02-11 15:55:20 -050052 server = self.create_test_server(name=server_name,
53 wait_until='ACTIVE')
Sean Dagueab277ad2013-03-15 15:59:06 -040054 id2 = server['id']
55 self.assertNotEqual(id1, id2, "Did not create a new server")
David Kranz0fb14292015-02-11 15:55:20 -050056 server = self.client.get_server(id1)
Sean Dagueab277ad2013-03-15 15:59:06 -040057 name1 = server['name']
David Kranz0fb14292015-02-11 15:55:20 -050058 server = self.client.get_server(id2)
Sean Dagueab277ad2013-03-15 15:59:06 -040059 name2 = server['name']
60 self.assertEqual(name1, name2)
Rohit Karajgidc300b22012-05-04 08:11:00 -070061
Yuiko Takadae9999d62014-03-06 09:22:54 +000062 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080063 @test.idempotent_id('f9e15296-d7f9-4e62-b53f-a04e89160833')
Rohit Karajgidc300b22012-05-04 08:11:00 -070064 def test_create_specify_keypair(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050065 # Specify a keypair while creating a server
Rohit Karajgidc300b22012-05-04 08:11:00 -070066
Masayuki Igawa259c1132013-10-31 17:48:44 +090067 key_name = data_utils.rand_name('key')
David Kranz173f0e02015-02-06 13:47:57 -050068 self.keypairs_client.create_keypair(key_name)
69 self.keypairs_client.list_keypairs()
David Kranz0fb14292015-02-11 15:55:20 -050070 server = self.create_test_server(key_name=key_name)
Sean Dagueab277ad2013-03-15 15:59:06 -040071 self.client.wait_for_server_status(server['id'], 'ACTIVE')
David Kranz0fb14292015-02-11 15:55:20 -050072 server = self.client.get_server(server['id'])
Sean Dagueab277ad2013-03-15 15:59:06 -040073 self.assertEqual(key_name, server['key_name'])
Rohit Karajgidc300b22012-05-04 08:11:00 -070074
Ghanshyam03d4dfd2014-05-26 14:20:37 +090075 def _update_server_name(self, server_id, status):
76 # The server name should be changed to the the provided value
77 new_name = data_utils.rand_name('server')
78 # Update the server with a new name
David Kranz0fb14292015-02-11 15:55:20 -050079 self.client.update_server(server_id,
80 name=new_name)
Ghanshyam03d4dfd2014-05-26 14:20:37 +090081 self.client.wait_for_server_status(server_id, status)
82
83 # Verify the name of the server has changed
David Kranz0fb14292015-02-11 15:55:20 -050084 server = self.client.get_server(server_id)
Ghanshyam03d4dfd2014-05-26 14:20:37 +090085 self.assertEqual(new_name, server['name'])
86 return server
87
Yuiko Takadae9999d62014-03-06 09:22:54 +000088 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080089 @test.idempotent_id('5e6ccff8-349d-4852-a8b3-055df7988dd2')
Daryl Walleck1465d612011-11-02 02:22:15 -050090 def test_update_server_name(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050091 # The server name should be changed to the the provided value
David Kranz0fb14292015-02-11 15:55:20 -050092 server = self.create_test_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050093
Ghanshyam03d4dfd2014-05-26 14:20:37 +090094 self._update_server_name(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -050095
Ghanshyam03d4dfd2014-05-26 14:20:37 +090096 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080097 @test.idempotent_id('6ac19cb1-27a3-40ec-b350-810bdc04c08e')
Ghanshyam03d4dfd2014-05-26 14:20:37 +090098 def test_update_server_name_in_stop_state(self):
99 # The server name should be changed to the the provided value
David Kranz0fb14292015-02-11 15:55:20 -0500100 server = self.create_test_server(wait_until='ACTIVE')
Ghanshyam03d4dfd2014-05-26 14:20:37 +0900101 self.client.stop(server['id'])
102 self.client.wait_for_server_status(server['id'], 'SHUTOFF')
103 updated_server = self._update_server_name(server['id'], 'SHUTOFF')
104 self.assertNotIn('progress', updated_server)
Daryl Walleck1465d612011-11-02 02:22:15 -0500105
Yuiko Takadae9999d62014-03-06 09:22:54 +0000106 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -0800107 @test.idempotent_id('89b90870-bc13-4b73-96af-f9d4f2b70077')
Daryl Walleck1465d612011-11-02 02:22:15 -0500108 def test_update_access_server_address(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500109 # The server's access addresses should reflect the provided values
David Kranz0fb14292015-02-11 15:55:20 -0500110 server = self.create_test_server(wait_until='ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500111
Sean Dagueab277ad2013-03-15 15:59:06 -0400112 # Update the IPv4 and IPv6 access addresses
David Kranz0fb14292015-02-11 15:55:20 -0500113 self.client.update_server(server['id'],
114 accessIPv4='1.1.1.1',
115 accessIPv6='::babe:202:202')
Sean Dagueab277ad2013-03-15 15:59:06 -0400116 self.client.wait_for_server_status(server['id'], 'ACTIVE')
Daryl Walleck1465d612011-11-02 02:22:15 -0500117
Sean Dagueab277ad2013-03-15 15:59:06 -0400118 # Verify the access addresses have been updated
David Kranz0fb14292015-02-11 15:55:20 -0500119 server = self.client.get_server(server['id'])
Sean Dagueab277ad2013-03-15 15:59:06 -0400120 self.assertEqual('1.1.1.1', server['accessIPv4'])
121 self.assertEqual('::babe:202:202', server['accessIPv6'])
Rohit Karajgidc300b22012-05-04 08:11:00 -0700122
Yuiko Takadae9999d62014-03-06 09:22:54 +0000123 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -0800124 @test.idempotent_id('38fb1d02-c3c5-41de-91d3-9bc2025a75eb')
jun xie0ea79842013-09-26 21:57:44 +0800125 def test_create_server_with_ipv6_addr_only(self):
126 # Create a server without an IPv4 address(only IPv6 address).
David Kranz0fb14292015-02-11 15:55:20 -0500127 server = self.create_test_server(accessIPv6='2001:2001::3')
jun xie0ea79842013-09-26 21:57:44 +0800128 self.client.wait_for_server_status(server['id'], 'ACTIVE')
David Kranz0fb14292015-02-11 15:55:20 -0500129 server = self.client.get_server(server['id'])
jun xie0ea79842013-09-26 21:57:44 +0800130 self.assertEqual('2001:2001::3', server['accessIPv6'])