blob: 234633b028cc21fa1d0b3aaa0e62589eb7df7165 [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
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053017from tempest import test
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060018
19
ivan-zhuf2b00502013-10-18 10:06:52 +080020class ServerMetadataTestJSON(base.BaseV2ComputeTest):
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060021
22 @classmethod
Rohan Kanade60b73092015-02-04 17:58:19 +053023 def setup_clients(cls):
24 super(ServerMetadataTestJSON, cls).setup_clients()
Daryl Walleckc7251962012-03-12 17:26:54 -050025 cls.client = cls.servers_client
Ashish Chandrac1beab02013-02-12 02:54:06 -080026 cls.quotas = cls.quotas_client
Rohan Kanade60b73092015-02-04 17:58:19 +053027
28 @classmethod
29 def resource_setup(cls):
30 super(ServerMetadataTestJSON, cls).resource_setup()
David Kranz0fb14292015-02-11 15:55:20 -050031 server = cls.create_test_server(meta={}, wait_until='ACTIVE')
Brian Waldon738cd632011-12-12 18:45:09 -050032 cls.server_id = server['id']
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060033
Brian Waldon738cd632011-12-12 18:45:09 -050034 def setUp(self):
meera-belurfd279d62013-02-15 15:35:46 -080035 super(ServerMetadataTestJSON, self).setUp()
Brian Waldon738cd632011-12-12 18:45:09 -050036 meta = {'key1': 'value1', 'key2': 'value2'}
David Kranzae99b9a2015-02-16 13:37:01 -050037 self.client.set_server_metadata(self.server_id, meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060038
Chris Hoge7579c1a2015-02-26 14:12:15 -080039 @test.idempotent_id('479da087-92b3-4dcf-aeb3-fd293b2d14ce')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060040 def test_list_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050041 # All metadata key/value pairs for a server should be returned
David Kranzae99b9a2015-02-16 13:37:01 -050042 resp_metadata = self.client.list_server_metadata(self.server_id)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060043
Attila Fazekasf7f34f92013-08-01 17:01:44 +020044 # Verify the expected metadata items are in the list
Brian Waldon738cd632011-12-12 18:45:09 -050045 expected = {'key1': 'value1', 'key2': 'value2'}
46 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060047
Chris Hoge7579c1a2015-02-26 14:12:15 -080048 @test.idempotent_id('211021f6-21de-4657-a68f-908878cfe251')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060049 def test_set_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050050 # The server's metadata should be replaced with the provided values
Attila Fazekasf7f34f92013-08-01 17:01:44 +020051 # Create a new set of metadata for the server
Brian Waldon738cd632011-12-12 18:45:09 -050052 req_metadata = {'meta2': 'data2', 'meta3': 'data3'}
David Kranzae99b9a2015-02-16 13:37:01 -050053 self.client.set_server_metadata(self.server_id, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060054
Attila Fazekasf7f34f92013-08-01 17:01:44 +020055 # Verify the expected values are correct, and that the
56 # previous values have been removed
David Kranzae99b9a2015-02-16 13:37:01 -050057 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -050058 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060059
Chris Hoge7579c1a2015-02-26 14:12:15 -080060 @test.idempotent_id('344d981e-0c33-4997-8a5d-6c1d803e4134')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060061 def test_update_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050062 # The server's metadata values should be updated to the
63 # provided values
Brian Waldon738cd632011-12-12 18:45:09 -050064 meta = {'key1': 'alt1', 'key3': 'value3'}
David Kranzae99b9a2015-02-16 13:37:01 -050065 self.client.update_server_metadata(self.server_id, meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060066
Attila Fazekasf7f34f92013-08-01 17:01:44 +020067 # Verify the values have been updated to the proper values
David Kranzae99b9a2015-02-16 13:37:01 -050068 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -050069 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
70 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060071
Chris Hoge7579c1a2015-02-26 14:12:15 -080072 @test.idempotent_id('0f58d402-e34a-481d-8af8-b392b17426d9')
Ashish Chandrac1beab02013-02-12 02:54:06 -080073 def test_update_metadata_empty_body(self):
74 # The original metadata should not be lost if empty metadata body is
75 # passed
76 meta = {}
David Kranzae99b9a2015-02-16 13:37:01 -050077 self.client.update_server_metadata(self.server_id, meta)
78 resp_metadata = self.client.list_server_metadata(self.server_id)
Ashish Chandrac1beab02013-02-12 02:54:06 -080079 expected = {'key1': 'value1', 'key2': 'value2'}
80 self.assertEqual(expected, resp_metadata)
81
Chris Hoge7579c1a2015-02-26 14:12:15 -080082 @test.idempotent_id('3043c57d-7e0e-49a6-9a96-ad569c265e6a')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060083 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070084 # The value for a specific metadata key should be returned
David Kranzae99b9a2015-02-16 13:37:01 -050085 meta = self.client.get_server_metadata_item(self.server_id, 'key2')
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070086 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060087
Chris Hoge7579c1a2015-02-26 14:12:15 -080088 @test.idempotent_id('58c02d4f-5c67-40be-8744-d3fa5982eb1c')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060089 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050090 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020091 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060092 meta = {'nova': 'alt'}
David Kranzae99b9a2015-02-16 13:37:01 -050093 self.client.set_server_metadata_item(self.server_id, 'nova', meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060094
Attila Fazekasf7f34f92013-08-01 17:01:44 +020095 # Verify the meta item's value has been updated
David Kranzae99b9a2015-02-16 13:37:01 -050096 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -050097 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
98 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060099
Chris Hoge7579c1a2015-02-26 14:12:15 -0800100 @test.idempotent_id('127642d6-4c7b-4486-b7cd-07265a378658')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600101 def test_delete_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500102 # The metadata value/key pair should be deleted from the server
David Kranzae99b9a2015-02-16 13:37:01 -0500103 self.client.delete_server_metadata_item(self.server_id, 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600104
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200105 # Verify the metadata item has been removed
David Kranzae99b9a2015-02-16 13:37:01 -0500106 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -0500107 expected = {'key2': 'value2'}
108 self.assertEqual(expected, resp_metadata)