blob: f77e7d3095a900802b6651b79c0afee2ae64da9b [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
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080017from tempest.lib import decorators
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
Rohan Kanade60b73092015-02-04 17:58:19 +053026
27 @classmethod
28 def resource_setup(cls):
29 super(ServerMetadataTestJSON, cls).resource_setup()
guo yunxian74ef7c72016-09-27 19:25:44 +080030 cls.server = cls.create_test_server(metadata={}, wait_until='ACTIVE')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060031
Brian Waldon738cd632011-12-12 18:45:09 -050032 def setUp(self):
meera-belurfd279d62013-02-15 15:35:46 -080033 super(ServerMetadataTestJSON, self).setUp()
Brian Waldon738cd632011-12-12 18:45:09 -050034 meta = {'key1': 'value1', 'key2': 'value2'}
guo yunxian74ef7c72016-09-27 19:25:44 +080035 self.client.set_server_metadata(self.server['id'], meta)['metadata']
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060036
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080037 @decorators.idempotent_id('479da087-92b3-4dcf-aeb3-fd293b2d14ce')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060038 def test_list_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050039 # All metadata key/value pairs for a server should be returned
guo yunxian74ef7c72016-09-27 19:25:44 +080040 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090041 ['metadata'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060042
Attila Fazekasf7f34f92013-08-01 17:01:44 +020043 # Verify the expected metadata items are in the list
Brian Waldon738cd632011-12-12 18:45:09 -050044 expected = {'key1': 'value1', 'key2': 'value2'}
45 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060046
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080047 @decorators.idempotent_id('211021f6-21de-4657-a68f-908878cfe251')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060048 def test_set_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050049 # The server's metadata should be replaced with the provided values
Attila Fazekasf7f34f92013-08-01 17:01:44 +020050 # Create a new set of metadata for the server
Brian Waldon738cd632011-12-12 18:45:09 -050051 req_metadata = {'meta2': 'data2', 'meta3': 'data3'}
guo yunxian74ef7c72016-09-27 19:25:44 +080052 self.client.set_server_metadata(self.server['id'],
ghanshyam0f825252015-08-25 16:02:50 +090053 req_metadata)['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
guo yunxian74ef7c72016-09-27 19:25:44 +080057 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090058 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -050059 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060060
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080061 @decorators.idempotent_id('344d981e-0c33-4997-8a5d-6c1d803e4134')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060062 def test_update_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050063 # The server's metadata values should be updated to the
64 # provided values
Brian Waldon738cd632011-12-12 18:45:09 -050065 meta = {'key1': 'alt1', 'key3': 'value3'}
guo yunxian74ef7c72016-09-27 19:25:44 +080066 self.client.update_server_metadata(self.server['id'], meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060067
Attila Fazekasf7f34f92013-08-01 17:01:44 +020068 # Verify the values have been updated to the proper values
guo yunxian74ef7c72016-09-27 19:25:44 +080069 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090070 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -050071 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
72 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060073
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080074 @decorators.idempotent_id('0f58d402-e34a-481d-8af8-b392b17426d9')
Ashish Chandrac1beab02013-02-12 02:54:06 -080075 def test_update_metadata_empty_body(self):
76 # The original metadata should not be lost if empty metadata body is
77 # passed
78 meta = {}
guo yunxian74ef7c72016-09-27 19:25:44 +080079 self.client.update_server_metadata(self.server['id'], meta)
80 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +090081 ['metadata'])
Ashish Chandrac1beab02013-02-12 02:54:06 -080082 expected = {'key1': 'value1', 'key2': 'value2'}
83 self.assertEqual(expected, resp_metadata)
84
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080085 @decorators.idempotent_id('3043c57d-7e0e-49a6-9a96-ad569c265e6a')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060086 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070087 # The value for a specific metadata key should be returned
guo yunxian74ef7c72016-09-27 19:25:44 +080088 meta = self.client.show_server_metadata_item(self.server['id'],
Ken'ichi Ohmichi277d1882015-11-20 00:44:06 +000089 'key2')['meta']
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070090 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060091
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -080092 @decorators.idempotent_id('58c02d4f-5c67-40be-8744-d3fa5982eb1c')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060093 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050094 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020095 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060096 meta = {'nova': 'alt'}
guo yunxian74ef7c72016-09-27 19:25:44 +080097 self.client.set_server_metadata_item(self.server['id'], 'nova', meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060098
Attila Fazekasf7f34f92013-08-01 17:01:44 +020099 # Verify the meta item's value has been updated
guo yunxian74ef7c72016-09-27 19:25:44 +0800100 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +0900101 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -0500102 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
103 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600104
Ken'ichi Ohmichi14b0ae12017-01-27 17:18:52 -0800105 @decorators.idempotent_id('127642d6-4c7b-4486-b7cd-07265a378658')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600106 def test_delete_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500107 # The metadata value/key pair should be deleted from the server
guo yunxian74ef7c72016-09-27 19:25:44 +0800108 self.client.delete_server_metadata_item(self.server['id'], 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600109
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200110 # Verify the metadata item has been removed
guo yunxian74ef7c72016-09-27 19:25:44 +0800111 resp_metadata = (self.client.list_server_metadata(self.server['id'])
ghanshyam0f825252015-08-25 16:02:50 +0900112 ['metadata'])
Brian Waldon738cd632011-12-12 18:45:09 -0500113 expected = {'key2': 'value2'}
114 self.assertEqual(expected, resp_metadata)