blob: ad4931ce18b2bd7187283b3184201ea6ccca8be1 [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):
Attila Fazekas19044d52013-02-16 07:35:06 +010021 _interface = 'json'
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060022
23 @classmethod
24 def setUpClass(cls):
meera-belurfd279d62013-02-15 15:35:46 -080025 super(ServerMetadataTestJSON, cls).setUpClass()
Daryl Walleckc7251962012-03-12 17:26:54 -050026 cls.client = cls.servers_client
Ashish Chandrac1beab02013-02-12 02:54:06 -080027 cls.quotas = cls.quotas_client
28 cls.admin_client = cls._get_identity_admin_client()
29 resp, tenants = cls.admin_client.list_tenants()
Ken'ichi Ohmichicfc052e2013-10-23 11:50:04 +090030 resp, server = cls.create_test_server(meta={}, wait_until='ACTIVE')
meera-belurfd279d62013-02-15 15:35:46 -080031
Brian Waldon738cd632011-12-12 18:45:09 -050032 cls.server_id = server['id']
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060033
Brian Waldon738cd632011-12-12 18:45:09 -050034 def setUp(self):
meera-belurfd279d62013-02-15 15:35:46 -080035 super(ServerMetadataTestJSON, self).setUp()
Brian Waldon738cd632011-12-12 18:45:09 -050036 meta = {'key1': 'value1', 'key2': 'value2'}
37 resp, _ = self.client.set_server_metadata(self.server_id, meta)
38 self.assertEqual(resp.status, 200)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060039
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053040 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060041 def test_list_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050042 # All metadata key/value pairs for a server should be returned
Brian Waldon738cd632011-12-12 18:45:09 -050043 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060044
Attila Fazekasf7f34f92013-08-01 17:01:44 +020045 # Verify the expected metadata items are in the list
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060046 self.assertEqual(200, resp.status)
Brian Waldon738cd632011-12-12 18:45:09 -050047 expected = {'key1': 'value1', 'key2': 'value2'}
48 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060049
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053050 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060051 def test_set_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050052 # The server's metadata should be replaced with the provided values
Attila Fazekasf7f34f92013-08-01 17:01:44 +020053 # Create a new set of metadata for the server
Brian Waldon738cd632011-12-12 18:45:09 -050054 req_metadata = {'meta2': 'data2', 'meta3': 'data3'}
55 resp, metadata = self.client.set_server_metadata(self.server_id,
56 req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060057 self.assertEqual(200, resp.status)
58
Attila Fazekasf7f34f92013-08-01 17:01:44 +020059 # Verify the expected values are correct, and that the
60 # previous values have been removed
Brian Waldon738cd632011-12-12 18:45:09 -050061 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
62 self.assertEqual(resp_metadata, req_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060063
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053064 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060065 def test_update_server_metadata(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050066 # The server's metadata values should be updated to the
67 # provided values
Brian Waldon738cd632011-12-12 18:45:09 -050068 meta = {'key1': 'alt1', 'key3': 'value3'}
69 resp, metadata = self.client.update_server_metadata(self.server_id,
70 meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060071 self.assertEqual(200, resp.status)
72
Attila Fazekasf7f34f92013-08-01 17:01:44 +020073 # Verify the values have been updated to the proper values
Brian Waldon738cd632011-12-12 18:45:09 -050074 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
75 expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
76 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060077
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053078 @test.attr(type='gate')
Ashish Chandrac1beab02013-02-12 02:54:06 -080079 def test_update_metadata_empty_body(self):
80 # The original metadata should not be lost if empty metadata body is
81 # passed
82 meta = {}
83 _, metadata = self.client.update_server_metadata(self.server_id, meta)
84 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
85 expected = {'key1': 'value1', 'key2': 'value2'}
86 self.assertEqual(expected, resp_metadata)
87
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053088 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060089 def test_get_server_metadata_item(self):
Chang Bo Guof099f802013-09-13 19:01:46 -070090 # The value for a specific metadata key should be returned
Brian Waldon738cd632011-12-12 18:45:09 -050091 resp, meta = self.client.get_server_metadata_item(self.server_id,
92 'key2')
Chang Bo Guo4ae51d42013-09-16 18:01:39 -070093 self.assertEqual('value2', meta['key2'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060094
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +053095 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060096 def test_set_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050097 # The item's value should be updated to the provided value
Attila Fazekasf7f34f92013-08-01 17:01:44 +020098 # Update the metadata value
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060099 meta = {'nova': 'alt'}
Brian Waldon738cd632011-12-12 18:45:09 -0500100 resp, body = self.client.set_server_metadata_item(self.server_id,
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600101 'nova', meta)
102 self.assertEqual(200, resp.status)
103
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200104 # Verify the meta item's value has been updated
Brian Waldon738cd632011-12-12 18:45:09 -0500105 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
106 expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
107 self.assertEqual(expected, resp_metadata)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600108
Hoisaleshwara Madan V S40884dc2013-12-26 15:24:31 +0530109 @test.attr(type='gate')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600110 def test_delete_server_metadata_item(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500111 # The metadata value/key pair should be deleted from the server
Brian Waldon738cd632011-12-12 18:45:09 -0500112 resp, meta = self.client.delete_server_metadata_item(self.server_id,
113 'key1')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -0600114 self.assertEqual(204, resp.status)
115
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200116 # Verify the metadata item has been removed
Brian Waldon738cd632011-12-12 18:45:09 -0500117 resp, resp_metadata = self.client.list_server_metadata(self.server_id)
118 expected = {'key2': 'value2'}
119 self.assertEqual(expected, resp_metadata)
sapan-kona17d7f062011-12-22 17:35:00 +0530120
meera-belurfd279d62013-02-15 15:35:46 -0800121
122class ServerMetadataTestXML(ServerMetadataTestJSON):
123 _interface = 'xml'