octodns.processor.meta

octodns.processor.meta._keys(values)[source]
class octodns.processor.meta.MetaProcessor(id, record_name='meta', include_time=True, include_uuid=False, include_version=False, include_provider=False, include_extra=None, ttl=60)[source]

Bases: BaseProcessor

Add a special metadata record with timestamps, UUIDs, versions, and/or provider name. Will only be updated when there are other changes being made. A useful tool to aid in debugging and monitoring of DNS infrastructure.

Timestamps or UUIDs can be useful in checking whether changes are propagating, either from a provider’s backend to their servers or via AXFRs.

Provider can be utilized to determine which DNS system responded to a query when things are operating in dual authority or split horizon setups.

Creates a TXT record with the name configured with values based on processor settings. Values are in the form key=<value>, e.g. time=2023-09-10T05:49:04.246953

processors:
meta:

class: octodns.processor.meta.MetaProcessor # The name to use for the meta record. # (default: meta) record_name: meta # Include a timestamp with a UTC value indicating the timeframe when the # last change was made. # (default: true) include_time: true # Include a UUID that can be utilized to uniquely identify the run # pushing data # (default: false) include_uuid: false # Include the provider id for the target where data is being pushed # (default: false) include_provider: false # 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: env/BAR

classmethod get_time()[source]
classmethod get_uuid()[source]
__init__(id, record_name='meta', include_time=True, include_uuid=False, include_version=False, include_provider=False, include_extra=None, ttl=60)[source]
values(target_id)[source]
process_source_and_target_zones(desired, existing, target)[source]

Called just prior to computing changes for target between desired and existing. Provides an opportunity for the processor to modify either the desired or existing `Zone`s that will be used to compute the changes and create the initial plan.

  • Will see desired after any modifications done by Provider._process_desired_zone and all processors via Processor.process_source_zone

  • Will see existing after any modifications done by all processors via Processor.process_target_zone

  • Will see both desired and existing after any modifications done by any processors configured to run before this one via Processor.process_source_and_target_zones.

  • May modify desired directly.

  • Must return desired which will normally be the desired param.

  • May modify existing directly.

  • Must return existing which will normally be the existing param.

  • Must not modify records directly, record.copy should be called, the results of which can be modified, and then Zone.add_record may be used with replace=True.

  • May call Zone.remove_record to remove records from desired.

  • May call Zone.remove_record to remove records from existing.

_is_up_to_date_meta(change, target_id)[source]
process_plan(plan, sources, target)[source]

Called after the planning phase has completed. Provides an opportunity for the processors to modify the plan thus changing the actions that will be displayed and potentially applied.

  • plan may be None if no changes were detected, if so a Plan may still be created and returned.

  • May modify plan.changes directly or create a new Plan.

  • Does not have to modify plan.desired and/or plan.existing to line up with any modifications made to plan.changes.

  • Should copy over plan.exists, plan.update_pcent_threshold, and plan.delete_pcent_threshold when creating a new Plan.

  • Must return a Plan which may be plan or can be a newly created one plan.desired and plan.existing copied over as-is or modified.