octodns.processor.restrict

Classes

TtlRestrictionFilter(name[, min_ttl, ...])

Ensure that configured TTLs are between a configured minimum and maximum or in an allowed set of values.

Exceptions

RestrictionException

exception octodns.processor.restrict.RestrictionException[source]

Bases: ProcessorException

class octodns.processor.restrict.TtlRestrictionFilter(name, min_ttl=1, max_ttl=604800, allowed_ttls=None, **kwargs)[source]

Bases: BaseProcessor

Ensure that configured TTLs are between a configured minimum and maximum or in an allowed set of values.

The default minimum is 1 (the behavior of 0 is undefined spec-wise) and the default maximum is 604800 (seven days.) allowed_ttls is only used when explicitly configured and min and max are ignored in that case.

Example usage:

processors:
  min-max-ttl:
    class: octodns.processor.restrict.TtlRestrictionFilter
    min_ttl: 60
    max_ttl: 3600
    # allowed_ttls: [300, 900, 3600]

zones:
  exxampled.com.:
    sources:
      - config
    processors:
      - min-max-ttl
    targets:
      - azure

The restriction can be skipped for specific records by setting the lenient flag, e.g.:

a:
  octodns:
    lenient: true
  ttl: 0
  value: 1.2.3.4

The higher level lenient flags are not checked as it would make more sense to just avoid enabling the processor in those cases.

SEVEN_DAYS = 604800
__init__(name, min_ttl=1, max_ttl=604800, allowed_ttls=None, **kwargs)[source]

Initialize the processor.

Parameters:
  • name (str) – Unique identifier for this processor instance. Used in logging and configuration references.

  • lenient (bool) – When True, the processor will operate in lenient mode. This value is combined with the per-call lenient parameter in process_* methods.

Note

The name parameter is deprecated and will be removed in version 2.0. Use id instead.

process_source_zone(zone, sources, lenient=False)[source]

Process the desired zone after all sources have populated.

Called after all sources have completed populate. Provides an opportunity for the processor to modify the desired zone that targets will receive.

Parameters:
  • desired (octodns.zone.Zone) – The desired zone state after all sources have populated. This zone will be used as the target state for planning.

  • sources (list[octodns.provider.base.BaseProvider]) – List of source providers that populated the zone. May be empty for aliased zones.

  • lenient (bool) – When True, relaxed validation rules should be applied when modifying zone records.

Returns:

The modified desired zone, typically the same object passed in.

Return type:

octodns.zone.Zone

Important

  • Will see desired after any modifications done by Provider._process_desired_zone and processors configured to run before this one.

  • May modify desired directly.

  • Must return desired which will normally be the desired 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.

  • Sources may be empty, as will be the case for aliased zones.

  • Implementations should combine self.lenient or lenient and pass the result to any record and zone calls that accept lenient as a parameter, e.g. zone.add_record(..., lenient=lenient).