mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
70 lines
2.9 KiB
Python
70 lines
2.9 KiB
Python
#
|
|
#
|
|
#
|
|
|
|
|
|
class ProcessorException(Exception):
|
|
pass
|
|
|
|
|
|
class BaseProcessor(object):
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
def process_source_zone(self, desired, sources):
|
|
'''
|
|
Called after all sources have completed populate. Provides an
|
|
opportunity for the processor to modify the desired `Zone` that targets
|
|
will receive.
|
|
|
|
- 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.
|
|
'''
|
|
return desired
|
|
|
|
def process_target_zone(self, existing, target):
|
|
'''
|
|
Called after a target has completed `populate`, before changes are
|
|
computed between `existing` and `desired`. This provides an opportunity
|
|
to modify the `existing` `Zone`.
|
|
|
|
- Will see `existing` after any modifrications done by processors
|
|
configured to run before this one.
|
|
- 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 `existing`.
|
|
'''
|
|
return existing
|
|
|
|
def process_plan(self, plan, sources, target):
|
|
'''
|
|
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.
|
|
'''
|
|
# plan may be None if no changes were detected up until now, the
|
|
# process may still create a plan.
|
|
# sources may be empty, as will be the case for aliased zones
|
|
return plan
|