Browse Source

Implement Record.copy() function

Flip if in _populate_and_plan()
pull/592/head
Jonathan Leroy 5 years ago
parent
commit
0b3a99bb8c
No known key found for this signature in database GPG Key ID: 7A0BCBE3934842EA
2 changed files with 15 additions and 9 deletions
  1. +6
    -9
      octodns/manager.py
  2. +9
    -0
      octodns/record/__init__.py

+ 6
- 9
octodns/manager.py 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 = []


+ 9
- 0
octodns/record/__init__.py 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.


Loading…
Cancel
Save