From fad8c039863c9f71d6ea8ee7cd55385dc6de4e4d Mon Sep 17 00:00:00 2001 From: Jonathan Leroy Date: Wed, 30 Jul 2025 14:14:04 +0200 Subject: [PATCH] Change in the way templating parameters are handled when trailing_dots is disabled --- .../3e57e696039c4f37a3062043be81199c.md | 4 +- .../6c6407b8ddf345ecb2e850e34d1ce328.md | 4 -- .../7e0022f1507d44d69422e92ce4d0a1c1.md | 4 -- octodns/processor/templating.py | 41 ++++++++++--------- tests/test_octodns_processor_templating.py | 2 +- 5 files changed, 24 insertions(+), 31 deletions(-) delete mode 100644 .changelog/6c6407b8ddf345ecb2e850e34d1ce328.md delete mode 100644 .changelog/7e0022f1507d44d69422e92ce4d0a1c1.md diff --git a/.changelog/3e57e696039c4f37a3062043be81199c.md b/.changelog/3e57e696039c4f37a3062043be81199c.md index 8b9ac97..56c3112 100644 --- a/.changelog/3e57e696039c4f37a3062043be81199c.md +++ b/.changelog/3e57e696039c4f37a3062043be81199c.md @@ -1,4 +1,4 @@ --- -type: patch +type: minor --- -Add trailing_dots parameter to templating processor \ No newline at end of file +Add trailing_dots parameter to templating processor diff --git a/.changelog/6c6407b8ddf345ecb2e850e34d1ce328.md b/.changelog/6c6407b8ddf345ecb2e850e34d1ce328.md deleted file mode 100644 index 4f36618..0000000 --- a/.changelog/6c6407b8ddf345ecb2e850e34d1ce328.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: patch ---- -Removes the final dot from zone_*name and record_*fqdn templating variables \ No newline at end of file diff --git a/.changelog/7e0022f1507d44d69422e92ce4d0a1c1.md b/.changelog/7e0022f1507d44d69422e92ce4d0a1c1.md deleted file mode 100644 index 3b0feab..0000000 --- a/.changelog/7e0022f1507d44d69422e92ce4d0a1c1.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -type: none ---- -Revert: Fix Templating processor not working on alias zones \ No newline at end of file diff --git a/octodns/processor/templating.py b/octodns/processor/templating.py index 0f34454..2f74bc6 100644 --- a/octodns/processor/templating.py +++ b/octodns/processor/templating.py @@ -66,10 +66,17 @@ class Templating(BaseProcessor): def process_source_zone(self, desired, sources): sources = sources or [] + zone_name = desired.decoded_name + zone_decoded_name = desired.decoded_name + zone_encoded_name = desired.name + if not self.trailing_dots: + zone_name = zone_name[:-1] + zone_decoded_name = zone_decoded_name[:-1] + zone_encoded_name = zone_encoded_name[:-1] zone_params = { - 'zone_name': desired.decoded_name, - 'zone_decoded_name': desired.decoded_name, - 'zone_encoded_name': desired.name, + 'zone_name': zone_name, + 'zone_decoded_name': zone_decoded_name, + 'zone_encoded_name': zone_encoded_name, 'zone_num_records': len(desired.records), 'zone_source_ids': ', '.join(s.id for s in sources), # add any extra context provided to us, if the value is a callable @@ -80,33 +87,27 @@ class Templating(BaseProcessor): for k, v in self.context.items() }, } - if not self.trailing_dots: - zone_params = zone_params | { - 'zone_name': desired.decoded_name[:-1], - 'zone_decoded_name': desired.decoded_name[:-1], - 'zone_encoded_name': desired.name[:-1], - } def params(record): - record_params = { + record_fqdn = record.decoded_fqdn + record_decoded_fqdn = record.decoded_fqdn + record_encoded_fqdn = record.fqdn + if not self.trailing_dots: + record_fqdn = record_fqdn[:-1] + record_decoded_fqdn = record_decoded_fqdn[:-1] + record_encoded_fqdn = record_encoded_fqdn[:-1] + return { 'record_name': record.decoded_name, 'record_decoded_name': record.decoded_name, 'record_encoded_name': record.name, - 'record_fqdn': record.decoded_fqdn, - 'record_decoded_fqdn': record.decoded_fqdn, - 'record_encoded_fqdn': record.fqdn, + 'record_fqdn': record_fqdn, + 'record_decoded_fqdn': record_decoded_fqdn, + 'record_encoded_fqdn': record_encoded_fqdn, 'record_type': record._type, 'record_ttl': record.ttl, 'record_source_id': record.source.id if record.source else None, **zone_params, } - if not self.trailing_dots: - record_params = record_params | { - 'record_fqdn': record.decoded_fqdn[:-1], - 'record_decoded_fqdn': record.decoded_fqdn[:-1], - 'record_encoded_fqdn': record.fqdn[:-1], - } - return record_params for record in desired.records: if hasattr(record, 'values'): diff --git a/tests/test_octodns_processor_templating.py b/tests/test_octodns_processor_templating.py index a313286..3c58174 100644 --- a/tests/test_octodns_processor_templating.py +++ b/tests/test_octodns_processor_templating.py @@ -156,7 +156,7 @@ class TemplatingTest(TestCase): { 'type': 'TXT', 'ttl': 42, - 'value': 'There are {zone_num_records} record(s) in {zone_name}.', + 'value': 'There are {zone_num_records} record(s) in {zone_name}', }, source=record_source, )