Fix error during set unicode metadata key
Change-Id: I2940670b4174dae800e76667ceecc80c568e613f Closes-Bug: #1622631
This commit is contained in:
@@ -490,15 +490,18 @@ class Resource(RequestIdMixin):
|
|||||||
|
|
||||||
def _add_details(self, info):
|
def _add_details(self, info):
|
||||||
for (k, v) in six.iteritems(info):
|
for (k, v) in six.iteritems(info):
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
setattr(self, k, v)
|
setattr(self, k, v)
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
pass
|
||||||
self._info[k] = v
|
self._info[k] = v
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# In this case we already defined the attribute on the class
|
# In this case we already defined the attribute on the class
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def __getattr__(self, k):
|
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
|
# NOTE(bcwaldon): disallow lazy-loading if already loaded once
|
||||||
if not self.is_loaded():
|
if not self.is_loaded():
|
||||||
self.get()
|
self.get()
|
||||||
@@ -506,7 +509,9 @@ class Resource(RequestIdMixin):
|
|||||||
|
|
||||||
raise AttributeError(k)
|
raise AttributeError(k)
|
||||||
else:
|
else:
|
||||||
|
if k in self.__.dict__:
|
||||||
return self.__dict__[k]
|
return self.__dict__[k]
|
||||||
|
return self._info[k]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def api_version(self):
|
def api_version(self):
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright (c) 2013 OpenStack Foundation
|
# Copyright (c) 2013 OpenStack Foundation
|
||||||
#
|
#
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
@@ -171,9 +172,9 @@ class VolumesTest(utils.TestCase):
|
|||||||
self._assert_request_id(vol)
|
self._assert_request_id(vol)
|
||||||
|
|
||||||
def test_set_metadata(self):
|
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',
|
cs.assert_called('POST', '/volumes/1234/metadata',
|
||||||
{'metadata': {'k1': 'v2'}})
|
{'metadata': {'k1': 'v2', 'тест': 'тест'}})
|
||||||
self._assert_request_id(vol)
|
self._assert_request_id(vol)
|
||||||
|
|
||||||
def test_delete_metadata(self):
|
def test_delete_metadata(self):
|
||||||
|
Reference in New Issue
Block a user