diff --git a/octodns/provider/plan.py b/octodns/provider/plan.py
index 10ab167..47a4157 100644
--- a/octodns/provider/plan.py
+++ b/octodns/provider/plan.py
@@ -124,6 +124,12 @@ class PlanLogger(_PlanOutput):
buf.write(' (')
buf.write(target)
buf.write(')\n* ')
+
+ if plan.exists is False:
+ buf.write('Create ')
+ buf.write(str(plan.desired))
+ buf.write('\n* ')
+
for change in plan.changes:
buf.write(change.__repr__(leader='* '))
buf.write('\n* ')
@@ -169,6 +175,11 @@ class PlanMarkdown(_PlanOutput):
fh.write('| Operation | Name | Type | TTL | Value | Source |\n'
'|--|--|--|--|--|--|\n')
+ if plan.exists is False:
+ fh.write('| Create | ')
+ fh.write(str(plan.desired))
+ fh.write(' | | | | |\n')
+
for change in plan.changes:
existing = change.existing
new = change.new
@@ -194,7 +205,8 @@ class PlanMarkdown(_PlanOutput):
fh.write(' | ')
fh.write(_value_stringifier(new, '; '))
fh.write(' | ')
- fh.write(new.source.id)
+ if new.source:
+ fh.write(new.source.id)
fh.write(' |\n')
fh.write('\nSummary: ')
@@ -230,6 +242,11 @@ class PlanHtml(_PlanOutput):
''')
+ if plan.exists is False:
+ fh.write('
\n | Create | \n ')
+ fh.write(str(plan.desired))
+ fh.write(' | \n
\n')
+
for change in plan.changes:
existing = change.existing
new = change.new
@@ -257,7 +274,8 @@ class PlanHtml(_PlanOutput):
fh.write('\n ')
fh.write(_value_stringifier(new, ' '))
fh.write(' | \n ')
- fh.write(new.source.id)
+ if new.source:
+ fh.write(new.source.id)
fh.write(' | \n \n')
fh.write(' \n | Summary: ')
diff --git a/octodns/provider/route53.py b/octodns/provider/route53.py
index 5bda074..9de1b0c 100644
--- a/octodns/provider/route53.py
+++ b/octodns/provider/route53.py
@@ -451,9 +451,11 @@ class Route53Provider(BaseProvider):
target, lenient)
before = len(zone.records)
+ exists = False
zone_id = self._get_zone_id(zone.name)
if zone_id:
+ exists = True
records = defaultdict(lambda: defaultdict(list))
for rrset in self._load_records(zone_id):
record_name = zone.hostname_from_fqdn(rrset['Name'])
@@ -483,8 +485,9 @@ class Route53Provider(BaseProvider):
lenient=lenient)
zone.add_record(record)
- self.log.info('populate: found %s records',
- len(zone.records) - before)
+ self.log.info('populate: found %s records, exists=%s',
+ len(zone.records) - before, exists)
+ return exists
def _gen_mods(self, action, records):
'''
diff --git a/tests/test_octodns_provider_route53.py b/tests/test_octodns_provider_route53.py
index 1cd4548..8da7f2e 100644
--- a/tests/test_octodns_provider_route53.py
+++ b/tests/test_octodns_provider_route53.py
@@ -361,6 +361,7 @@ class TestRoute53Provider(TestCase):
plan = provider.plan(self.expected)
self.assertEquals(9, len(plan.changes))
+ self.assertTrue(plan.exists)
for change in plan.changes:
self.assertIsInstance(change, Create)
stubber.assert_no_pending_responses()
@@ -593,6 +594,7 @@ class TestRoute53Provider(TestCase):
plan = provider.plan(self.expected)
self.assertEquals(9, len(plan.changes))
+ self.assertFalse(plan.exists)
for change in plan.changes:
self.assertIsInstance(change, Create)
stubber.assert_no_pending_responses()
|