From fe387ae91be85391005dafcdcc92f5a3f01bff62 Mon Sep 17 00:00:00 2001 From: Erik Olof Gunnar Andersson Date: Mon, 18 Jul 2022 21:15:25 -0700 Subject: [PATCH] Fixed issues with __repr__ and __str__ on objects We are currently override __repr__ in our base VersionedObject and removing some useful information when debugging. - Re-wrote __str__ to not raise an exception if data is missing. - Removed some unused _to_string functions. - Changed _from_string to from_string. Change-Id: Idfd6c959cf943c5aaf95746f16070000bf82ca21 --- designate/objects/base.py | 32 ++++++++--------- designate/objects/record.py | 8 ++--- designate/objects/recordset.py | 6 ++-- designate/objects/rrdata_a.py | 5 +-- designate/objects/rrdata_aaaa.py | 5 +-- designate/objects/rrdata_caa.py | 7 ++-- designate/objects/rrdata_cert.py | 7 ++-- designate/objects/rrdata_cname.py | 5 +-- designate/objects/rrdata_mx.py | 5 +-- designate/objects/rrdata_naptr.py | 10 +++--- designate/objects/rrdata_ns.py | 5 +-- designate/objects/rrdata_ptr.py | 5 +-- designate/objects/rrdata_soa.py | 10 +++--- designate/objects/rrdata_spf.py | 5 +-- designate/objects/rrdata_srv.py | 5 +-- designate/objects/rrdata_sshfp.py | 5 +-- designate/objects/rrdata_txt.py | 5 +-- designate/tests/unit/objects/test_base.py | 34 +++++++++++++++++++ .../tests/unit/objects/test_recordset.py | 12 ++++++- designate/tests/unit/objects/test_rrdata_a.py | 13 +++++++ .../tests/unit/objects/test_rrdata_caa.py | 28 +++++++-------- .../tests/unit/objects/test_rrdata_cert.py | 12 +++---- .../tests/unit/objects/test_rrdata_mx.py | 2 +- .../tests/unit/objects/test_rrdata_naptr.py | 2 +- .../tests/unit/objects/test_rrdata_sshfp.py | 2 +- .../tests/unit/objects/test_rrdata_txt.py | 4 +-- 26 files changed, 127 insertions(+), 112 deletions(-) diff --git a/designate/objects/base.py b/designate/objects/base.py index 4a7c5927a..876cd95ef 100644 --- a/designate/objects/base.py +++ b/designate/objects/base.py @@ -12,6 +12,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. + from oslo_log import log as logging from oslo_utils import excutils from oslo_versionedobjects import base @@ -19,11 +20,10 @@ from oslo_versionedobjects.base import VersionedObjectDictCompat as DictObjectMi from oslo_versionedobjects import exception from oslo_versionedobjects import fields as ovoo_fields - from designate import exceptions -from designate.i18n import _ from designate.objects import fields + LOG = logging.getLogger(__name__) @@ -54,16 +54,15 @@ class DesignateObject(base.VersionedObject): self.FIELDS = self.fields @classmethod - def _make_obj_str(cls, keys): - msg = "<%(name)s" % {'name': cls.obj_name()} - for key in keys: - msg += " {0}:'%({0})s'".format(key) + def _make_obj_str(cls, data): + msg = "<%s" % cls.obj_name() + for key in cls.STRING_KEYS: + msg += " %s:'%s'" % (key, data.get(key)) msg += ">" return msg - def __str__(self): - return (self._make_obj_str(self.STRING_KEYS) - % self) + def __repr__(self): + return self._make_obj_str(self.to_dict()) def save(self, context): pass @@ -153,9 +152,6 @@ class DesignateObject(base.VersionedObject): def __ne__(self, other): return not (self.__eq__(other)) - def __repr__(self): - return "OVO Objects" - # TODO(daidv): all of bellow functions should # be removed when we completed migration. def nested_sort(self, key, value): @@ -360,11 +356,13 @@ class ListObjectMixin(base.ObjectListBase): return list_ - def __str__(self): - return (_("<%(type)s count:'%(count)s' object:'%(list_type)s'>") - % {'count': len(self), - 'type': self.LIST_ITEM_TYPE.obj_name(), - 'list_type': self.obj_name()}) + def __repr__(self): + return ("<%(type)s count:'%(count)s' object:'%(list_type)s'>" % + { + 'type': self.LIST_ITEM_TYPE.obj_name(), + 'count': len(self), + 'list_type': self.obj_name() + }) def __iter__(self): """List iterator interface""" diff --git a/designate/objects/record.py b/designate/objects/record.py index 6c9698ffd..9e7274249 100644 --- a/designate/objects/record.py +++ b/designate/objects/record.py @@ -66,11 +66,11 @@ class Record(base.DesignateObject, base.PersistentObjectMixin, 'id', 'recordset_id', 'data' ] - def __str__(self): + def __repr__(self): record = self.to_dict() - record['data'] = record['data'][:35] - return (self._make_obj_str(self.STRING_KEYS) - % record) + if 'data' in record: + record['data'] = record['data'][:35] + return self._make_obj_str(record) @base.DesignateRegistry.register diff --git a/designate/objects/recordset.py b/designate/objects/recordset.py index e2f1ffbcb..1f5d7feb4 100755 --- a/designate/objects/recordset.py +++ b/designate/objects/recordset.py @@ -151,11 +151,11 @@ class RecordSet(base.DesignateObject, base.DictObjectMixin, for record in old_records: record_obj = record_cls() try: - record_obj._from_string(record.data) - # The _from_string() method will throw a ValueError if there is not + record_obj.from_string(record.data) + # The from_string() method will throw a ValueError if there is not # enough data blobs except ValueError as e: - # Something broke in the _from_string() method + # Something broke in the from_string() method # Fake a correct looking ValidationError() object e = ValidationError() e.path = ['records', i] diff --git a/designate/objects/rrdata_a.py b/designate/objects/rrdata_a.py index bbe298e0d..d34bd0295 100644 --- a/designate/objects/rrdata_a.py +++ b/designate/objects/rrdata_a.py @@ -28,10 +28,7 @@ class A(Record): 'address': fields.IPV4AddressField() } - def _to_string(self): - return self.address - - def _from_string(self, value): + def from_string(self, value): self.address = value # The record type is defined in the RFC. This will be used when the record diff --git a/designate/objects/rrdata_aaaa.py b/designate/objects/rrdata_aaaa.py index b20739070..f3127231c 100644 --- a/designate/objects/rrdata_aaaa.py +++ b/designate/objects/rrdata_aaaa.py @@ -28,10 +28,7 @@ class AAAA(Record): 'address': fields.IPV6AddressField() } - def _to_string(self): - return self.address - - def _from_string(self, value): + def from_string(self, value): self.address = value # The record type is defined in the RFC. This will be used when the record diff --git a/designate/objects/rrdata_caa.py b/designate/objects/rrdata_caa.py index 4b141b786..f5294b292 100644 --- a/designate/objects/rrdata_caa.py +++ b/designate/objects/rrdata_caa.py @@ -30,11 +30,8 @@ class CAA(Record): 'prpt': fields.CaaPropertyField() } - def _to_string(self): - return ("%(flag)s %(prpt)s" % self) - - def _from_string(self, v): - flags, prpt = v.split(' ', 1) + def from_string(self, value): + flags, prpt = value.split(' ', 1) self.flags = int(flags) self.prpt = prpt diff --git a/designate/objects/rrdata_cert.py b/designate/objects/rrdata_cert.py index d0b27ed9e..e9f9f05c6 100644 --- a/designate/objects/rrdata_cert.py +++ b/designate/objects/rrdata_cert.py @@ -92,11 +92,8 @@ class CERT(Record): raise ValueError('Cert certificate is not valid.') return certificate - def _to_string(self): - return '%(cert_type)s %(key_tag)s %(cert_algo)s %(certificate)s' % self - - def _from_string(self, v): - cert_type, key_tag, cert_algo, certificate = v.split(' ', 3) + def from_string(self, value): + cert_type, key_tag, cert_algo, certificate = value.split(' ', 3) self.cert_type = self.validate_cert_type(cert_type) self.key_tag = int(key_tag) diff --git a/designate/objects/rrdata_cname.py b/designate/objects/rrdata_cname.py index b876585ae..8123babc5 100644 --- a/designate/objects/rrdata_cname.py +++ b/designate/objects/rrdata_cname.py @@ -28,10 +28,7 @@ class CNAME(Record): 'cname': fields.DomainField(maxLength=255) } - def _to_string(self): - return self.cname - - def _from_string(self, value): + def from_string(self, value): self.cname = value # The record type is defined in the RFC. This will be used when the record diff --git a/designate/objects/rrdata_mx.py b/designate/objects/rrdata_mx.py index caf6dedb2..7d924358e 100644 --- a/designate/objects/rrdata_mx.py +++ b/designate/objects/rrdata_mx.py @@ -29,10 +29,7 @@ class MX(Record): 'exchange': fields.StringFields(maxLength=255), } - def _to_string(self): - return '%(priority)s %(exchange)s' % self - - def _from_string(self, value): + def from_string(self, value): priority, exchange = value.split(' ') if repr(int(priority)) != priority: diff --git a/designate/objects/rrdata_naptr.py b/designate/objects/rrdata_naptr.py index cbc22231b..ff6485e18 100644 --- a/designate/objects/rrdata_naptr.py +++ b/designate/objects/rrdata_naptr.py @@ -35,12 +35,10 @@ class NAPTR(Record): 'replacement': fields.DomainField(maxLength=255) } - def _to_string(self): - return ("%(order)s %(preference)s %(flags)s %(service)s %(regexp)s " - "%(replacement)s" % self) - - def _from_string(self, v): - order, preference, flags, service, regexp, replacement = v.split(' ') + def from_string(self, value): + order, preference, flags, service, regexp, replacement = ( + value.split(' ') + ) self.order = int(order) self.preference = int(preference) self.flags = flags diff --git a/designate/objects/rrdata_ns.py b/designate/objects/rrdata_ns.py index a411d2187..d3cd2720c 100644 --- a/designate/objects/rrdata_ns.py +++ b/designate/objects/rrdata_ns.py @@ -34,10 +34,7 @@ class NS(Record): 'name': fields.DomainField(), } - def _to_string(self): - return self.nsdname - - def _from_string(self, value): + def from_string(self, value): self.nsdname = value # The record type is defined in the RFC. This will be used when the record diff --git a/designate/objects/rrdata_ptr.py b/designate/objects/rrdata_ptr.py index a3ae7e317..bb2564a4e 100644 --- a/designate/objects/rrdata_ptr.py +++ b/designate/objects/rrdata_ptr.py @@ -28,10 +28,7 @@ class PTR(Record): 'ptrdname': fields.DomainField(maxLength=255) } - def _to_string(self): - return self.ptrdname - - def _from_string(self, value): + def from_string(self, value): self.ptrdname = value # The record type is defined in the RFC. This will be used when the record diff --git a/designate/objects/rrdata_soa.py b/designate/objects/rrdata_soa.py index 72809b49b..8bfe2c180 100644 --- a/designate/objects/rrdata_soa.py +++ b/designate/objects/rrdata_soa.py @@ -35,12 +35,10 @@ class SOA(Record): 'minimum': fields.IntegerFields(minimum=0, maximum=2147483647) } - def _to_string(self): - return ("%(mname)s %(rname)s %(serial)s %(refresh)s %(retry)s " - "%(expire)s %(minimum)s" % self) - - def _from_string(self, v): - mname, rname, serial, refresh, retry, expire, minimum = v.split(' ') + def from_string(self, value): + mname, rname, serial, refresh, retry, expire, minimum = ( + value.split(' ') + ) self.mname = mname self.rname = rname self.serial = int(serial) diff --git a/designate/objects/rrdata_spf.py b/designate/objects/rrdata_spf.py index f409991d7..9755ef6a3 100644 --- a/designate/objects/rrdata_spf.py +++ b/designate/objects/rrdata_spf.py @@ -28,10 +28,7 @@ class SPF(Record): 'txt_data': fields.StringFields() } - def _to_string(self): - return self.txt_data - - def _from_string(self, value): + def from_string(self, value): if not value.startswith('"') and not value.endswith('"'): # value with spaces should be quoted as per RFC1035 5.1 for element in value: diff --git a/designate/objects/rrdata_srv.py b/designate/objects/rrdata_srv.py index 5a2d638ba..4ecbcc64d 100644 --- a/designate/objects/rrdata_srv.py +++ b/designate/objects/rrdata_srv.py @@ -37,10 +37,7 @@ class SRV(Record): 'name': fields.SRVField(maxLength=255, nullable=True) } - def _to_string(self): - return "%(priority)s %(weight)s %(target)s %(port)s" % self - - def _from_string(self, value): + def from_string(self, value): priority, weight, port, target = value.split(' ') self.priority = int(priority) self.weight = int(weight) diff --git a/designate/objects/rrdata_sshfp.py b/designate/objects/rrdata_sshfp.py index 2ab6bc697..2fe4078f6 100644 --- a/designate/objects/rrdata_sshfp.py +++ b/designate/objects/rrdata_sshfp.py @@ -30,10 +30,7 @@ class SSHFP(Record): 'fingerprint': fields.Sshfp(nullable=True), } - def _to_string(self): - return "%(algorithm)s %(fp_type)s %(fingerprint)s" % self - - def _from_string(self, value): + def from_string(self, value): algorithm, fp_type, fingerprint = value.split(' ') for value in {algorithm, fp_type}: diff --git a/designate/objects/rrdata_txt.py b/designate/objects/rrdata_txt.py index 654094ef0..736ffc358 100644 --- a/designate/objects/rrdata_txt.py +++ b/designate/objects/rrdata_txt.py @@ -28,9 +28,6 @@ class TXT(Record): 'txt_data': fields.TxtField() } - def _to_string(self): - return self.txt_data - @staticmethod def _is_wrapped_in_double_quotes(value): return value.startswith('"') and value.endswith('"') @@ -71,7 +68,7 @@ class TXT(Record): 'Quotation marks should be escaped with backslash.' ) - def _from_string(self, value): + def from_string(self, value): if len(value) > 255: # expecting record containing multiple strings as # per rfc7208 3.3 and rfc1035 3.3.14 diff --git a/designate/tests/unit/objects/test_base.py b/designate/tests/unit/objects/test_base.py index b6d8079e4..26b050948 100644 --- a/designate/tests/unit/objects/test_base.py +++ b/designate/tests/unit/objects/test_base.py @@ -39,6 +39,10 @@ class TestObject(objects.DesignateObject): 'nested_list': fields.ObjectFields('TestObjectList', nullable=True), } + STRING_KEYS = [ + 'id', 'name' + ] + @base.DesignateRegistry.register class TestObjectDict(TestObject, objects.DictObjectMixin): @@ -64,6 +68,36 @@ class TestValidatableObject(objects.DesignateObject): class DesignateObjectTest(oslotest.base.BaseTestCase): + def test_obj_to_repr(self): + obj = TestObject.from_dict({ + 'id': 1, 'name': 'example' + }) + self.assertEqual( + "", + repr(obj) + ) + + def test_obj_to_str(self): + obj = TestObject.from_dict({ + 'id': 1, 'name': 'example' + }) + self.assertEqual( + "", str(obj) + ) + + def test_empty_obj_to_str(self): + self.assertEqual( + "", str(TestObject()) + ) + + def test_record_to_str(self): + obj = objects.Record.from_dict({ + 'id': 1, 'recordset_id': '2', 'data': 'example' + }) + self.assertEqual( + "", str(obj) + ) + def test_obj_cls_from_name(self): cls = objects.DesignateObject.obj_cls_from_name('TestObject') self.assertEqual(TestObject, cls) diff --git a/designate/tests/unit/objects/test_recordset.py b/designate/tests/unit/objects/test_recordset.py index 634221bfa..4786801d9 100644 --- a/designate/tests/unit/objects/test_recordset.py +++ b/designate/tests/unit/objects/test_recordset.py @@ -28,6 +28,8 @@ LOG = logging.getLogger(__name__) def create_test_recordset(): record_set = objects.RecordSet( + id='f6a2cbd6-7f9a-4e0c-a00d-98a02aa73fc8', + zone_id='74038683-cab1-4056-bdf8-b39bd155ff21', name='www.example.org.', type='A', records=objects.RecordList(objects=[ @@ -39,12 +41,20 @@ def create_test_recordset(): class RecordSetTest(oslotest.base.BaseTestCase): - def test_init(self): record_set = create_test_recordset() self.assertEqual('www.example.org.', record_set.name) self.assertEqual('A', record_set.type) + def test_to_repr(self): + record_set = create_test_recordset() + self.assertEqual( + "", + repr(record_set) + ) + def test_not_managed(self): record_set = create_test_recordset() self.assertFalse(record_set.managed) diff --git a/designate/tests/unit/objects/test_rrdata_a.py b/designate/tests/unit/objects/test_rrdata_a.py index 1a03ffbaa..b84071157 100644 --- a/designate/tests/unit/objects/test_rrdata_a.py +++ b/designate/tests/unit/objects/test_rrdata_a.py @@ -23,6 +23,19 @@ LOG = logging.getLogger(__name__) class RRDataATest(oslotest.base.BaseTestCase): + def test_to_repr(self): + recordset = objects.RecordSet( + name='www.example.test.', type='A', + records=objects.RecordList(objects=[ + objects.Record(data='192.168.0.1'), + ]) + ) + recordset.validate() + self.assertEqual( + "", + repr(recordset.records[0]) + ) + def test_valid_a_record(self): recordset = objects.RecordSet( name='www.example.test.', type='A', diff --git a/designate/tests/unit/objects/test_rrdata_caa.py b/designate/tests/unit/objects/test_rrdata_caa.py index 9c93979dc..24643b705 100644 --- a/designate/tests/unit/objects/test_rrdata_caa.py +++ b/designate/tests/unit/objects/test_rrdata_caa.py @@ -24,14 +24,14 @@ LOG = logging.getLogger(__name__) class RRDataCAATest(oslotest.base.BaseTestCase): def test_parse_caa_issue(self): caa_record = objects.CAA() - caa_record._from_string('0 issue ca.example.net') + caa_record.from_string('0 issue ca.example.net') self.assertEqual(0, caa_record.flags) self.assertEqual('issue ca.example.net', caa_record.prpt) def test_parse_caa_issuewild(self): caa_record = objects.CAA() - caa_record._from_string('1 issuewild ca.example.net; policy=ev') + caa_record.from_string('1 issuewild ca.example.net; policy=ev') self.assertEqual(1, caa_record.flags) self.assertEqual('issuewild ca.example.net; policy=ev', @@ -39,19 +39,19 @@ class RRDataCAATest(oslotest.base.BaseTestCase): def test_parse_caa_iodef(self): caa_record = objects.CAA() - caa_record._from_string('0 iodef https://example.net/') + caa_record.from_string('0 iodef https://example.net/') self.assertEqual(0, caa_record.flags) self.assertEqual('iodef https://example.net/', caa_record.prpt) caa_record = objects.CAA() - caa_record._from_string('0 iodef mailto:security@example.net') + caa_record.from_string('0 iodef mailto:security@example.net') self.assertEqual(0, caa_record.flags) self.assertEqual('iodef mailto:security@example.net', caa_record.prpt) caa_record = objects.CAA() - caa_record._from_string('0 iodef mailto:security+caa@example.net') + caa_record.from_string('0 iodef mailto:security+caa@example.net') self.assertEqual(0, caa_record.flags) self.assertEqual('iodef mailto:security+caa@example.net', @@ -62,7 +62,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, "Property tag 1 2 must be 'issue', 'issuewild' or 'iodef'", - caa_record._from_string, '0 1 2' + caa_record.from_string, '0 1 2' ) def test_parse_caa_issue_host_too_long(self): @@ -72,7 +72,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): ValueError, 'Host aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'aaaaaaaaaa is too long', - caa_record._from_string, '0 issue %s.net' % hostname + caa_record.from_string, '0 issue %s.net' % hostname ) def test_parse_caa_issue_domain_not_valid(self): @@ -80,7 +80,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Domain abc. is invalid', - caa_record._from_string, '0 issue abc.' + caa_record.from_string, '0 issue abc.' ) def test_parse_caa_issue_key_value_not_valid(self): @@ -88,7 +88,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'def is not a valid key-value pair', - caa_record._from_string, '0 issue abc;def' + caa_record.from_string, '0 issue abc;def' ) def test_parse_caa_iodef_mail_host_too_long(self): @@ -98,7 +98,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): ValueError, 'Host aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'aaaaaaaaaa is too long', - caa_record._from_string, '0 iodef mailto:me@%s.net' % hostname + caa_record.from_string, '0 iodef mailto:me@%s.net' % hostname ) def test_parse_caa_iodef_mail_domain_not_valid(self): @@ -106,7 +106,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Domain example.net. is invalid', - caa_record._from_string, '0 iodef mailto:me@example.net.' + caa_record.from_string, '0 iodef mailto:me@example.net.' ) def test_parse_caa_iodef_http_host_too_long(self): @@ -116,7 +116,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): ValueError, 'Host aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'aaaaaaaaaa is too long', - caa_record._from_string, '0 iodef https://%s.net/' % hostname + caa_record.from_string, '0 iodef https://%s.net/' % hostname ) def test_parse_caa_iodef_http_domain_not_valid(self): @@ -124,7 +124,7 @@ class RRDataCAATest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Domain example.net. is invalid', - caa_record._from_string, '0 iodef https://example.net./' + caa_record.from_string, '0 iodef https://example.net./' ) def test_parse_caa_iodef_not_valid_url(self): @@ -132,5 +132,5 @@ class RRDataCAATest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'https:// is not a valid URL', - caa_record._from_string, '0 iodef https://' + caa_record.from_string, '0 iodef https://' ) diff --git a/designate/tests/unit/objects/test_rrdata_cert.py b/designate/tests/unit/objects/test_rrdata_cert.py index 030c5bd6e..b6598679a 100644 --- a/designate/tests/unit/objects/test_rrdata_cert.py +++ b/designate/tests/unit/objects/test_rrdata_cert.py @@ -25,7 +25,7 @@ LOG = logging.getLogger(__name__) class RRDataCERTTest(oslotest.base.BaseTestCase): def test_parse_cert(self): cert_record = objects.CERT() - cert_record._from_string( + cert_record.from_string( 'DPKIX 1 RSASHA256 KR1L0GbocaIOOim1+qdHtOSrDcOsGiI2NCcxuX2/Tqc=' ) @@ -42,7 +42,7 @@ class RRDataCERTTest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Cert type value should be between 0 and 65535', - cert_record._from_string, + cert_record.from_string, '99999 1 RSASHA256 KR1L0GbocaIOOim1+qdHtOSrDcOsGiI2NCcxuX2/Tqc=' ) @@ -51,7 +51,7 @@ class RRDataCERTTest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Cert type is not valid Mnemonic.', - cert_record._from_string, + cert_record.from_string, 'FAKETYPE 1 RSASHA256 KR1L0GbocaIOOim1+qdHtOSrDcOsGiI2NCcxuX2/Tqc=' ) @@ -60,7 +60,7 @@ class RRDataCERTTest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Cert algorithm value should be between 0 and 255', - cert_record._from_string, + cert_record.from_string, 'DPKIX 1 256 KR1L0GbocaIOOim1+qdHtOSrDcOsGiI2NCcxuX2/Tqc=' ) @@ -69,7 +69,7 @@ class RRDataCERTTest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Cert algorithm is not valid Mnemonic.', - cert_record._from_string, + cert_record.from_string, 'DPKIX 1 FAKESHA256 KR1L0GbocaIOOim1+qdHtOSrDcOsGiI2NCcxuX2/Tqc=' ) @@ -78,6 +78,6 @@ class RRDataCERTTest(oslotest.base.BaseTestCase): self.assertRaisesRegex( ValueError, 'Cert certificate is not valid.', - cert_record._from_string, + cert_record.from_string, 'DPKIX 1 RSASHA256 KR1L0GbocaIOOim1+qdHtOSrDcOsGiI2NCcxuX2/Tqc' ) diff --git a/designate/tests/unit/objects/test_rrdata_mx.py b/designate/tests/unit/objects/test_rrdata_mx.py index d5b708237..1344bf26e 100644 --- a/designate/tests/unit/objects/test_rrdata_mx.py +++ b/designate/tests/unit/objects/test_rrdata_mx.py @@ -25,7 +25,7 @@ LOG = logging.getLogger(__name__) class RRDataMXTest(oslotest.base.BaseTestCase): def test_parse_mx(self): mx_record = objects.MX() - mx_record._from_string('0 mail.example.org.') + mx_record.from_string('0 mail.example.org.') self.assertEqual(0, mx_record.priority) self.assertEqual('mail.example.org.', mx_record.exchange) diff --git a/designate/tests/unit/objects/test_rrdata_naptr.py b/designate/tests/unit/objects/test_rrdata_naptr.py index 81223a200..4759ca3d3 100644 --- a/designate/tests/unit/objects/test_rrdata_naptr.py +++ b/designate/tests/unit/objects/test_rrdata_naptr.py @@ -24,7 +24,7 @@ LOG = logging.getLogger(__name__) class RRDataNAPTRTest(oslotest.base.BaseTestCase): def test_parse_naptr(self): naptr_record = objects.NAPTR() - naptr_record._from_string( + naptr_record.from_string( '0 0 S SIP+D2U !^.*$!sip:customer-service@example.com! _sip._udp.example.com.') # noqa self.assertEqual(0, naptr_record.order) diff --git a/designate/tests/unit/objects/test_rrdata_sshfp.py b/designate/tests/unit/objects/test_rrdata_sshfp.py index eee2da6f5..10a4fe0ec 100644 --- a/designate/tests/unit/objects/test_rrdata_sshfp.py +++ b/designate/tests/unit/objects/test_rrdata_sshfp.py @@ -25,7 +25,7 @@ LOG = logging.getLogger(__name__) class RRDataSSHTPTest(oslotest.base.BaseTestCase): def test_parse_sshfp(self): sshfp_record = objects.SSHFP() - sshfp_record._from_string( + sshfp_record.from_string( '0 0 72d30d211ce8c464de2811e534de23b9be9b4dc4') self.assertEqual(0, sshfp_record.algorithm) diff --git a/designate/tests/unit/objects/test_rrdata_txt.py b/designate/tests/unit/objects/test_rrdata_txt.py index 55742664a..76edfe6de 100644 --- a/designate/tests/unit/objects/test_rrdata_txt.py +++ b/designate/tests/unit/objects/test_rrdata_txt.py @@ -66,13 +66,13 @@ class RRDataTXTTest(oslotest.base.BaseTestCase): ValueError, "TXT record is missing a double quote either at beginning " "or at end.", - record._from_string, + record.from_string, '"foo' ) self.assertRaisesRegex( ValueError, "TXT record is missing a double quote either at beginning " "or at end.", - record._from_string, + record.from_string, 'foo"' )