Browse Source

Add --split flag to dump

Signed-off-by: Christian Funkhouser <cfunkhouser@heroku.com>
pull/336/head
Christian Funkhouser 7 years ago
parent
commit
81d9c083fc
No known key found for this signature in database GPG Key ID: 6894A9878C7FB782
2 changed files with 11 additions and 4 deletions
  1. +5
    -1
      octodns/cmds/dump.py
  2. +6
    -3
      octodns/manager.py

+ 5
- 1
octodns/cmds/dump.py View File

@ -21,6 +21,9 @@ def main():
parser.add_argument('--lenient', action='store_true', default=False, parser.add_argument('--lenient', action='store_true', default=False,
help='Ignore record validations and do a best effort ' help='Ignore record validations and do a best effort '
'dump') 'dump')
parser.add_argument('--split', action='store_true', default=False,
help='Split the dumped zone into a YAML file per '
'record')
parser.add_argument('zone', help='Zone to dump') parser.add_argument('zone', help='Zone to dump')
parser.add_argument('source', nargs='+', parser.add_argument('source', nargs='+',
help='Source(s) to pull data from') help='Source(s) to pull data from')
@ -28,7 +31,8 @@ def main():
args = parser.parse_args() args = parser.parse_args()
manager = Manager(args.config_file) manager = Manager(args.config_file)
manager.dump(args.zone, args.output_dir, args.lenient, *args.source)
manager.dump(args.zone, args.output_dir, args.lenient, args.split,
*args.source)
if __name__ == '__main__': if __name__ == '__main__':


+ 6
- 3
octodns/manager.py View File

@ -12,7 +12,7 @@ import logging
from .provider.base import BaseProvider from .provider.base import BaseProvider
from .provider.plan import Plan from .provider.plan import Plan
from .provider.yaml import YamlProvider
from .provider.yaml import SplitYamlProvider, YamlProvider
from .record import Record from .record import Record
from .yaml import safe_load from .yaml import safe_load
from .zone import Zone from .zone import Zone
@ -357,7 +357,7 @@ class Manager(object):
return zb.changes(za, _AggregateTarget(a + b)) return zb.changes(za, _AggregateTarget(a + b))
def dump(self, zone, output_dir, lenient, source, *sources):
def dump(self, zone, output_dir, lenient, split, source, *sources):
''' '''
Dump zone data from the specified source Dump zone data from the specified source
''' '''
@ -372,7 +372,10 @@ class Manager(object):
except KeyError as e: except KeyError as e:
raise Exception('Unknown source: {}'.format(e.args[0])) raise Exception('Unknown source: {}'.format(e.args[0]))
target = YamlProvider('dump', output_dir)
clz = YamlProvider
if split:
clz = SplitYamlProvider
target = clz('dump', output_dir)
zone = Zone(zone, self.configured_sub_zones(zone)) zone = Zone(zone, self.configured_sub_zones(zone))
for source in sources: for source in sources:


Loading…
Cancel
Save