blob: 7e8247f9ff5563e4f6338ce0aea74377c7fa10f2 [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'}
33 resp, _ = self.client.set_server_metadata(self.server_id, meta)
34 self.assertEqual(resp.status, 200)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060035
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053036 @test.attr(type='gate')
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
Brian Waldon738cd632011-12-12 18:45:09 -050039 resp, 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
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060042 self.assertEqual(200, resp.status)
Brian Waldon738cd632011-12-12 18:45:09 -050043 expected = {'key1': 'value1', 'key2': 'value2'}
44 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060045
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053046 @test.attr(type='gate')
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'}
51 resp, metadata = self.client.set_server_metadata(self.server_id,
52 req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060053 self.assertEqual(200, resp.status)
54
Attila Fazekasf7f34f92013-08-01 17:01:44 +020055 # Verify the expected values are correct, and that the
56 # previous values have been removed
Brian Waldon738cd632011-12-12 18:45:09 -050057 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
58 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060059
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053060 @test.attr(type='gate')
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'}
65 resp, metadata = self.client.update_server_metadata(self.server_id,
66 meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060067 self.assertEqual(200, resp.status)
68
Attila Fazekasf7f34f92013-08-01 17:01:44 +020069 # Verify the values have been updated to the proper values
Brian Waldon738cd632011-12-12 18:45:09 -050070 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
71 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
72 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060073
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053074 @test.attr(type='gate')
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 = {}
79 _, metadata = self.client.update_server_metadata(self.server_id, meta)
80 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
81 expected = {'key1': 'value1', 'key2': 'value2'}
82 self.assertEqual(expected, resp_metadata)
83
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053084 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060085 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070086 # The value for a specific metadata key should be returned
Brian Waldon738cd632011-12-12 18:45:09 -050087 resp, meta = self.client.get_server_metadata_item(self.server_id,
88 'key2')
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070089 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060090
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053091 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060092 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050093 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020094 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060095 meta = {'nova': 'alt'}
Brian Waldon738cd632011-12-12 18:45:09 -050096 resp, body = self.client.set_server_metadata_item(self.server_id,
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060097 'nova', meta)
98 self.assertEqual(200, resp.status)
99
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200100 # Verify the meta item's value has been updated
Brian Waldon738cd632011-12-12 18:45:09 -0500101 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
102 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
103 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600104
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +0530105 @test.attr(type='gate')
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
Brian Waldon738cd632011-12-12 18:45:09 -0500108 resp, meta = self.client.delete_server_metadata_item(self.server_id,
109 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600110 self.assertEqual(204, resp.status)
111
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200112 # Verify the metadata item has been removed
Brian Waldon738cd632011-12-12 18:45:09 -0500113 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
114 expected = {'key2': 'value2'}
115 self.assertEqual(expected, resp_metadata)