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

Example

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.