blob: 4a14228cfe9fe0b0c281225c175fccc821d1abe8 [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
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010023 def resource_setup(cls):
24 super(ServerMetadataTestJSON, cls).resource_setup()
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
David Kranz0fb14292015-02-11 15:55:20 -050027 server = cls.create_test_server(meta={}, wait_until='ACTIVE')
Brian Waldon738cd632011-12-12 18:45:09 -050028 cls.server_id = server['id']
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060029
Brian Waldon738cd632011-12-12 18:45:09 -050030 def setUp(self):
meera-belurfd279d62013-02-15 15:35:46 -080031 super(ServerMetadataTestJSON, self).setUp()
Brian Waldon738cd632011-12-12 18:45:09 -050032 meta = {'key1': 'value1', 'key2': 'value2'}
David Kranzae99b9a2015-02-16 13:37:01 -050033 self.client.set_server_metadata(self.server_id, meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060034
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053035 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080036 @test.idempotent_id('479da087-92b3-4dcf-aeb3-fd293b2d14ce')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060037 def test_list_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050038 # All metadata key/value pairs for a server should be returned
David Kranzae99b9a2015-02-16 13:37:01 -050039 resp_metadata = self.client.list_server_metadata(self.server_id)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060040
Attila Fazekasf7f34f92013-08-01 17:01:44 +020041 # Verify the expected metadata items are in the list
Brian Waldon738cd632011-12-12 18:45:09 -050042 expected = {'key1': 'value1', 'key2': 'value2'}
43 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060044
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053045 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080046 @test.idempotent_id('211021f6-21de-4657-a68f-908878cfe251')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060047 def test_set_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050048 # The server's metadata should be replaced with the provided values
Attila Fazekasf7f34f92013-08-01 17:01:44 +020049 # Create a new set of metadata for the server
Brian Waldon738cd632011-12-12 18:45:09 -050050 req_metadata = {'meta2': 'data2', 'meta3': 'data3'}
David Kranzae99b9a2015-02-16 13:37:01 -050051 self.client.set_server_metadata(self.server_id, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060052
Attila Fazekasf7f34f92013-08-01 17:01:44 +020053 # Verify the expected values are correct, and that the
54 # previous values have been removed
David Kranzae99b9a2015-02-16 13:37:01 -050055 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -050056 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060057
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053058 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080059 @test.idempotent_id('344d981e-0c33-4997-8a5d-6c1d803e4134')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060060 def test_update_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050061 # The server's metadata values should be updated to the
62 # provided values
Brian Waldon738cd632011-12-12 18:45:09 -050063 meta = {'key1': 'alt1', 'key3': 'value3'}
David Kranzae99b9a2015-02-16 13:37:01 -050064 self.client.update_server_metadata(self.server_id, meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060065
Attila Fazekasf7f34f92013-08-01 17:01:44 +020066 # Verify the values have been updated to the proper values
David Kranzae99b9a2015-02-16 13:37:01 -050067 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -050068 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
69 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060070
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053071 @test.attr(type='gate')
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
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053082 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080083 @test.idempotent_id('3043c57d-7e0e-49a6-9a96-ad569c265e6a')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060084 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070085 # The value for a specific metadata key should be returned
David Kranzae99b9a2015-02-16 13:37:01 -050086 meta = self.client.get_server_metadata_item(self.server_id, 'key2')
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070087 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060088
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053089 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080090 @test.idempotent_id('58c02d4f-5c67-40be-8744-d3fa5982eb1c')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060091 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050092 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020093 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060094 meta = {'nova': 'alt'}
David Kranzae99b9a2015-02-16 13:37:01 -050095 self.client.set_server_metadata_item(self.server_id, 'nova', meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060096
Attila Fazekasf7f34f92013-08-01 17:01:44 +020097 # Verify the meta item's value has been updated
David Kranzae99b9a2015-02-16 13:37:01 -050098 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -050099 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
100 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600101
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +0530102 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -0800103 @test.idempotent_id('127642d6-4c7b-4486-b7cd-07265a378658')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600104 def test_delete_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500105 # The metadata value/key pair should be deleted from the server
David Kranzae99b9a2015-02-16 13:37:01 -0500106 self.client.delete_server_metadata_item(self.server_id, 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600107
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200108 # Verify the metadata item has been removed
David Kranzae99b9a2015-02-16 13:37:01 -0500109 resp_metadata = self.client.list_server_metadata(self.server_id)
Brian Waldon738cd632011-12-12 18:45:09 -0500110 expected = {'key2': 'value2'}
111 self.assertEqual(expected, resp_metadata)