diff --git a/CHANGELOG.md b/CHANGELOG.md index 5de9bee..cb9e453 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## v1.?.? - 2024-??-?? - ??? + +* MetaProcessor.include_extra to add support for arbitrary extra values to be + set on the meta record. + ## v1.9.1 - 2024-06-21 - What's in a name * Add `name` to Change.data, and thus PlanJson output diff --git a/octodns/processor/meta.py b/octodns/processor/meta.py index 64a53f5..c0baeb7 100644 --- a/octodns/processor/meta.py +++ b/octodns/processor/meta.py @@ -59,6 +59,12 @@ class MetaProcessor(BaseProcessor): # Include the octoDNS version being used # (default: false) include_version: false + # Extra values to set on the records + # (default: None) + #include_extra: + # - key=val + # - foo=bar + # - arbitrary string ''' @classmethod @@ -77,17 +83,19 @@ class MetaProcessor(BaseProcessor): include_uuid=False, include_version=False, include_provider=False, + include_extra=None, ttl=60, ): self.log = getLogger(f'MetaSource[{id}]') super().__init__(id) self.log.info( - '__init__: record_name=%s, include_time=%s, include_uuid=%s, include_version=%s, include_provider=%s, ttl=%d', + '__init__: record_name=%s, include_time=%s, include_uuid=%s, include_version=%s, include_provider=%s, include_extra=%s, ttl=%d', record_name, include_time, include_uuid, include_version, include_provider, + include_extra, ttl, ) self.record_name = record_name @@ -95,6 +103,7 @@ class MetaProcessor(BaseProcessor): self.uuid = self.get_uuid() if include_uuid else None self.include_version = include_version self.include_provider = include_provider + self.include_extra = include_extra self.ttl = ttl def values(self, target_id): @@ -107,6 +116,8 @@ class MetaProcessor(BaseProcessor): ret.append(f'time={self.time}') if self.uuid: ret.append(f'uuid={self.uuid}') + if self.include_extra is not None: + ret.extend(self.include_extra) return ret def process_source_and_target_zones(self, desired, existing, target): diff --git a/tests/test_octodns_processor_meta.py b/tests/test_octodns_processor_meta.py index 1bbc9fd..685f34b 100644 --- a/tests/test_octodns_processor_meta.py +++ b/tests/test_octodns_processor_meta.py @@ -116,12 +116,26 @@ class TestMetaProcessor(TestCase): self.assertFalse(proc.time) self.assertFalse(proc.include_provider) self.assertFalse(proc.include_version) + self.assertIsNone(proc.include_extra) values = list(proc.values('dummy')) self.assertEqual(1, len(values)) value = values[0] self.assertEqual(f'uuid={proc.uuid}', value) + def test_extra(self): + extra = ['one', 'two=three', 'four', 'five six'] + proc = MetaProcessor('test', include_time=False, include_extra=extra) + self.assertEqual(extra, proc.include_extra) + self.assertFalse(proc.include_provider) + self.assertFalse(proc.include_version) + self.assertFalse(proc.time) + self.assertFalse(proc.uuid) + + values = list(proc.values('dummy')) + self.assertEqual(4, len(values)) + self.assertEqual(extra, values) + def test_is_up_to_date_meta(self): proc = MetaProcessor('test')