blob: 448b8ffd04dfd5e51594ead628e94c8e558f64c5 [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
23 def setUpClass(cls):
meera-belurfd279d62013-02-15 15:35:46 -080024 super(ServerMetadataTestJSON, cls).setUpClass()
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
27 cls.admin_client = cls._get_identity_admin_client()
28 resp, tenants = cls.admin_client.list_tenants()
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090029 resp, server = cls.create_test_server(meta={}, wait_until='ACTIVE')
meera-belurfd279d62013-02-15 15:35:46 -080030
Brian Waldon738cd632011-12-12 18:45:09 -050031 cls.server_id = server['id']
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'}
36 resp, _ = self.client.set_server_metadata(self.server_id, meta)
37 self.assertEqual(resp.status, 200)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060038
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053039 @test.attr(type='gate')
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
Brian Waldon738cd632011-12-12 18:45:09 -050042 resp, 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
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060045 self.assertEqual(200, resp.status)
Brian Waldon738cd632011-12-12 18:45:09 -050046 expected = {'key1': 'value1', 'key2': 'value2'}
47 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060048
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053049 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060050 def test_set_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050051 # The server's metadata should be replaced with the provided values
Attila Fazekasf7f34f92013-08-01 17:01:44 +020052 # Create a new set of metadata for the server
Brian Waldon738cd632011-12-12 18:45:09 -050053 req_metadata = {'meta2': 'data2', 'meta3': 'data3'}
54 resp, metadata = self.client.set_server_metadata(self.server_id,
55 req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060056 self.assertEqual(200, resp.status)
57
Attila Fazekasf7f34f92013-08-01 17:01:44 +020058 # Verify the expected values are correct, and that the
59 # previous values have been removed
Brian Waldon738cd632011-12-12 18:45:09 -050060 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
61 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060062
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053063 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060064 def test_update_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050065 # The server's metadata values should be updated to the
66 # provided values
Brian Waldon738cd632011-12-12 18:45:09 -050067 meta = {'key1': 'alt1', 'key3': 'value3'}
68 resp, metadata = self.client.update_server_metadata(self.server_id,
69 meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060070 self.assertEqual(200, resp.status)
71
Attila Fazekasf7f34f92013-08-01 17:01:44 +020072 # Verify the values have been updated to the proper values
Brian Waldon738cd632011-12-12 18:45:09 -050073 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
74 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
75 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060076
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053077 @test.attr(type='gate')
Ashish Chandrac1beab02013-02-12 02:54:06 -080078 def test_update_metadata_empty_body(self):
79 # The original metadata should not be lost if empty metadata body is
80 # passed
81 meta = {}
82 _, metadata = self.client.update_server_metadata(self.server_id, meta)
83 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
84 expected = {'key1': 'value1', 'key2': 'value2'}
85 self.assertEqual(expected, resp_metadata)
86
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053087 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060088 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070089 # The value for a specific metadata key should be returned
Brian Waldon738cd632011-12-12 18:45:09 -050090 resp, meta = self.client.get_server_metadata_item(self.server_id,
91 'key2')
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070092 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060093
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053094 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060095 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050096 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020097 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060098 meta = {'nova': 'alt'}
Brian Waldon738cd632011-12-12 18:45:09 -050099 resp, body = self.client.set_server_metadata_item(self.server_id,
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600100 'nova', meta)
101 self.assertEqual(200, resp.status)
102
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200103 # Verify the meta item's value has been updated
Brian Waldon738cd632011-12-12 18:45:09 -0500104 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
105 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
106 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600107
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +0530108 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600109 def test_delete_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500110 # The metadata value/key pair should be deleted from the server
Brian Waldon738cd632011-12-12 18:45:09 -0500111 resp, meta = self.client.delete_server_metadata_item(self.server_id,
112 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600113 self.assertEqual(204, resp.status)
114
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200115 # Verify the metadata item has been removed
Brian Waldon738cd632011-12-12 18:45:09 -0500116 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
117 expected = {'key2': 'value2'}
118 self.assertEqual(expected, resp_metadata)
sapan-kona17d7f062011-12-22 17:35:00 +0530119
meera-belurfd279d62013-02-15 15:35:46 -0800120
121class ServerMetadataTestXML(ServerMetadataTestJSON):
122 _interface = 'xml'