blob: cb66e817043518ebd9c374ee0eb8cfd2eec0fe4d [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()
guo yunxian74ef7c72016-09-27 19:25:44 +080031 cls.server = cls.create_test_server(metadata={}, wait_until='ACTIVE')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060032
Brian Waldon738cd632011-12-12 18:45:09 -050033 def setUp(self):
meera-belurfd279d62013-02-15 15:35:46 -080034 super(ServerMetadataTestJSON, self).setUp()
Brian Waldon738cd632011-12-12 18:45:09 -050035 meta = {'key1': 'value1', 'key2': 'value2'}
guo yunxian74ef7c72016-09-27 19:25:44 +080036 self.client.set_server_metadata(self.server['id'], meta)['metadata']
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060037
Chris Hoge7579c1a2015-02-26 14:12:15 -080038 @test.idempotent_id('479da087-92b3-4dcf-aeb3-fd293b2d14ce')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060039 def test_list_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050040 # All metadata key/value pairs for a server should be returned
guo yunxian74ef7c72016-09-27 19:25:44 +080041 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090042 ['metadata'])
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'}
guo yunxian74ef7c72016-09-27 19:25:44 +080053 self.client.set_server_metadata(self.server['id'],
ghanshyam0f825252015-08-25 16:02:50 +090054 req_metadata)['metadata']
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060055
Attila Fazekasf7f34f92013-08-01 17:01:44 +020056 # Verify the expected values are correct, and that the
57 # previous values have been removed
guo yunxian74ef7c72016-09-27 19:25:44 +080058 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090059 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -050060 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060061
Chris Hoge7579c1a2015-02-26 14:12:15 -080062 @test.idempotent_id('344d981e-0c33-4997-8a5d-6c1d803e4134')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060063 def test_update_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050064 # The server's metadata values should be updated to the
65 # provided values
Brian Waldon738cd632011-12-12 18:45:09 -050066 meta = {'key1': 'alt1', 'key3': 'value3'}
guo yunxian74ef7c72016-09-27 19:25:44 +080067 self.client.update_server_metadata(self.server['id'], meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060068
Attila Fazekasf7f34f92013-08-01 17:01:44 +020069 # Verify the values have been updated to the proper values
guo yunxian74ef7c72016-09-27 19:25:44 +080070 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090071 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -050072 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
73 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060074
Chris Hoge7579c1a2015-02-26 14:12:15 -080075 @test.idempotent_id('0f58d402-e34a-481d-8af8-b392b17426d9')
Ashish Chandrac1beab02013-02-12 02:54:06 -080076 def test_update_metadata_empty_body(self):
77 # The original metadata should not be lost if empty metadata body is
78 # passed
79 meta = {}
guo yunxian74ef7c72016-09-27 19:25:44 +080080 self.client.update_server_metadata(self.server['id'], meta)
81 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090082 ['metadata'])
Ashish Chandrac1beab02013-02-12 02:54:06 -080083 expected = {'key1': 'value1', 'key2': 'value2'}
84 self.assertEqual(expected, resp_metadata)
85
Chris Hoge7579c1a2015-02-26 14:12:15 -080086 @test.idempotent_id('3043c57d-7e0e-49a6-9a96-ad569c265e6a')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060087 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070088 # The value for a specific metadata key should be returned
guo yunxian74ef7c72016-09-27 19:25:44 +080089 meta = self.client.show_server_metadata_item(self.server['id'],
Ken'ichi Ohmichi277d1882015-11-20 00:44:06 +000090 'key2')['meta']
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070091 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060092
Chris Hoge7579c1a2015-02-26 14:12:15 -080093 @test.idempotent_id('58c02d4f-5c67-40be-8744-d3fa5982eb1c')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060094 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050095 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020096 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060097 meta = {'nova': 'alt'}
guo yunxian74ef7c72016-09-27 19:25:44 +080098 self.client.set_server_metadata_item(self.server['id'], 'nova', meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060099
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200100 # Verify the meta item's value has been updated
guo yunxian74ef7c72016-09-27 19:25:44 +0800101 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +0900102 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -0500103 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
104 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600105
Chris Hoge7579c1a2015-02-26 14:12:15 -0800106 @test.idempotent_id('127642d6-4c7b-4486-b7cd-07265a378658')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600107 def test_delete_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500108 # The metadata value/key pair should be deleted from the server
guo yunxian74ef7c72016-09-27 19:25:44 +0800109 self.client.delete_server_metadata_item(self.server['id'], 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600110
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200111 # Verify the metadata item has been removed
guo yunxian74ef7c72016-09-27 19:25:44 +0800112 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +0900113 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -0500114 expected = {'key2': 'value2'}
115 self.assertEqual(expected, resp_metadata)