1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Implement Record.copy() function

Flip if in _populate_and_plan()
This commit is contained in:
Jonathan Leroy
2020-10-31 09:38:35 +01:00
parent 3acea0d89d
commit 0b3a99bb8c
2 changed files with 15 additions and 9 deletions

View File

@@ -230,7 +230,12 @@ class Manager(object):
zone = Zone(zone_name,
sub_zones=self.configured_sub_zones(zone_name))
if not desired:
if desired:
for _, records in desired._records.items():
for record in records:
zone.add_record(record.copy(zone=zone), lenient=lenient)
else:
for source in sources:
try:
source.populate(zone, lenient=lenient)
@@ -241,14 +246,6 @@ class Manager(object):
'param', source.__class__.__name__)
source.populate(zone)
else:
for _, records in desired._records.items():
for record in records:
d = record.data
d['type'] = record._type
r = Record.new(zone, record.name, d, source=record.source)
zone.add_record(r, lenient=lenient)
self.log.debug('sync: planning, zone=%s', zone_name)
plans = []

View File

@@ -151,6 +151,7 @@ class Record(EqualityTupleMixin):
# force everything lower-case just to be safe
self.name = text_type(name).lower() if name else name
self.source = source
self._raw_data = data
self.ttl = int(data['ttl'])
self._octodns = data.get('octodns', {})
@@ -219,6 +220,14 @@ class Record(EqualityTupleMixin):
if self.ttl != other.ttl:
return Update(self, other)
def copy(self, zone=None):
return Record(
zone if zone else self.zone,
self.name,
self._raw_data,
self.source
)
# NOTE: we're using __hash__ and ordering methods that consider Records
# equivalent if they have the same name & _type. Values are ignored. This
# is useful when computing diffs/changes.