Browse Source

Quick pass at implementing PlanJson

pull/1178/head
Ross McFarland 2 years ago
parent
commit
8988d9b4ca
No known key found for this signature in database GPG Key ID: 943B179E15D3B22A
2 changed files with 29 additions and 0 deletions
  1. +16
    -0
      octodns/provider/plan.py
  2. +13
    -0
      tests/test_octodns_plan.py

+ 16
- 0
octodns/provider/plan.py View File

@ -2,7 +2,9 @@
#
#
from collections import defaultdict
from io import StringIO
from json import dumps
from logging import DEBUG, ERROR, INFO, WARN, getLogger
from sys import stdout
@ -220,6 +222,20 @@ def _value_stringifier(record, sep):
return sep.join(values)
class PlanJson(_PlanOutput):
def __init__(self, name, indent=None, sort_keys=True):
super().__init__(name)
self.indent = indent
self.sort_keys = sort_keys
def run(self, plans, fh=stdout, *args, **kwargs):
data = defaultdict(dict)
for target, plan in plans:
data[target.id][plan.desired.name] = plan.data
fh.write(dumps(data, indent=self.indent, sort_keys=self.sort_keys))
class PlanMarkdown(_PlanOutput):
def run(self, plans, fh=stdout, *args, **kwargs):
if plans:


+ 13
- 0
tests/test_octodns_plan.py View File

@ -3,6 +3,7 @@
#
from io import StringIO
from json import loads
from logging import getLogger
from unittest import TestCase
@ -11,6 +12,7 @@ from helpers import SimpleProvider
from octodns.provider.plan import (
Plan,
PlanHtml,
PlanJson,
PlanLogger,
PlanMarkdown,
RootNsChange,
@ -126,6 +128,17 @@ class TestPlanHtml(TestCase):
)
class TestPlanJson(TestCase):
def test_basics(self):
out = StringIO()
PlanJson('json').run(plans, fh=out)
data = loads(out.getvalue())
for key in ('test', 'unit.tests.', 'changes'):
self.assertTrue(key in data)
data = data[key]
self.assertEqual(4, len(data))
class TestPlanMarkdown(TestCase):
log = getLogger('TestPlanMarkdown')


Loading…
Cancel
Save