Fix error during set unicode metadata key

Change-Id: I2940670b4174dae800e76667ceecc80c568e613f
Closes-Bug: #1622631
This commit is contained in:
Ivan Kolodyazhny
2016-09-22 14:56:20 +03:00
parent b174967f91
commit 0fd11f30f4
2 changed files with 11 additions and 5 deletions

View File

@@ -491,14 +491,17 @@ class Resource(RequestIdMixin):
def _add_details(self, info):
for (k, v) in six.iteritems(info):
try:
setattr(self, k, v)
try:
setattr(self, k, v)
except UnicodeEncodeError:
pass
self._info[k] = v
except AttributeError:
# In this case we already defined the attribute on the class
pass
def __getattr__(self, k):
if k not in self.__dict__:
if k not in self.__dict__ or k not in self._info:
# NOTE(bcwaldon): disallow lazy-loading if already loaded once
if not self.is_loaded():
self.get()
@@ -506,7 +509,9 @@ class Resource(RequestIdMixin):
raise AttributeError(k)
else:
return self.__dict__[k]
if k in self.__.dict__:
return self.__dict__[k]
return self._info[k]
@property
def api_version(self):

View File

@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2013 OpenStack Foundation
#
# All Rights Reserved.
@@ -171,9 +172,9 @@ class VolumesTest(utils.TestCase):
self._assert_request_id(vol)
def test_set_metadata(self):
vol = cs.volumes.set_metadata(1234, {'k1': 'v2'})
vol = cs.volumes.set_metadata(1234, {'k1': 'v2', 'тест': 'тест'})
cs.assert_called('POST', '/volumes/1234/metadata',
{'metadata': {'k1': 'v2'}})
{'metadata': {'k1': 'v2', 'тест': 'тест'}})
self._assert_request_id(vol)
def test_delete_metadata(self):