Stop using md5 for __repr__ of objects

The md5 function is not available on systems in FIPS mode, just
use the callable name (which is closer to how repr usually looks).

Change-Id: I4319ce2f42f35251595306b9a77ae1f8bc55595c
This commit is contained in:
Dmitry Tantsur 2020-07-07 14:52:05 +02:00
parent 3c47122f36
commit 8aecabcfe4
3 changed files with 3 additions and 14 deletions

View File

@ -14,8 +14,6 @@
# under the License. # under the License.
import ast import ast
import hashlib
import inspect
from oslo_versionedobjects import fields as object_fields from oslo_versionedobjects import fields as object_fields
@ -57,10 +55,7 @@ class StringFieldThatAcceptsCallable(object_fields.StringField):
default = self._default default = self._default
if (self._default != object_fields.UnspecifiedDefault if (self._default != object_fields.UnspecifiedDefault
and callable(self._default)): and callable(self._default)):
default = "%s-%s" % ( default = '<function %s>' % default.__name__
self._default.__name__,
hashlib.md5(inspect.getsource(
self._default).encode()).hexdigest())
return '%s(default=%s,nullable=%s)' % (self._type.__class__.__name__, return '%s(default=%s,nullable=%s)' % (self._type.__class__.__name__,
default, self._nullable) default, self._nullable)

View File

@ -13,9 +13,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import hashlib
import inspect
from ironic.common import exception from ironic.common import exception
from ironic.objects import fields from ironic.objects import fields
from ironic.tests import base as test_base from ironic.tests import base as test_base
@ -73,8 +70,6 @@ class TestStringFieldThatAcceptsCallable(test_base.TestCase):
def test_default_function(): def test_default_function():
return "default value" return "default value"
self.test_default_function_hash = hashlib.md5(
inspect.getsource(test_default_function).encode()).hexdigest()
self.field = fields.StringFieldThatAcceptsCallable( self.field = fields.StringFieldThatAcceptsCallable(
default=test_default_function) default=test_default_function)
@ -102,8 +97,8 @@ class TestStringFieldThatAcceptsCallable(test_base.TestCase):
self.field.coerce('obj', 'attr', None)) self.field.coerce('obj', 'attr', None))
def test__repr__includes_default_function_name_and_source_hash(self): def test__repr__includes_default_function_name_and_source_hash(self):
expected = ('StringAcceptsCallable(default=test_default_function-%s,' expected = ('StringAcceptsCallable(default=<function '
'nullable=False)' % self.test_default_function_hash) 'test_default_function>,nullable=False)')
self.assertEqual(expected, repr(self.field)) self.assertEqual(expected, repr(self.field))

View File

@ -89,7 +89,6 @@ tests:
# (optional) list skipped test IDs here, eg '[B101, B406]': # (optional) list skipped test IDs here, eg '[B101, B406]':
skips: skips:
- B104 - B104
- B303
- B604 - B604
### (optional) plugin settings - some test plugins require configuration data ### (optional) plugin settings - some test plugins require configuration data