Skip to content

Commit 1d73151

Browse files
committed
[openwrt] Complete ddns converter
Signed-off-by: Konrad Kreitmair <kkreitmair@tdt.de>
1 parent 6a6aad6 commit 1d73151

File tree

1 file changed

+18
-5
lines changed
  • netjsonconfig/backends/openwrt/converters

1 file changed

+18
-5
lines changed

netjsonconfig/backends/openwrt/converters/ddns.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def to_intermediate_loop(self, block, result, index=None):
1616
block.update({'.type': 'ddns', '.name': block.pop('id', 'global')})
1717
result.setdefault('ddns', [])
1818
result['ddns'] = [self.sorted_dict(block)] + provider_list
19+
1920
return result
2021

2122
def __intermediate_providers(self, providers):
@@ -24,20 +25,32 @@ def __intermediate_providers(self, providers):
2425
UCI intermediate data structure
2526
"""
2627
result = []
28+
2729
for provider in providers:
2830
uci_name = self._get_uci_name(provider['lookup_host'])
2931
resultdict = OrderedDict((('.name', uci_name), ('.type', 'service')))
3032
resultdict.update(provider)
3133
result.append(resultdict)
34+
3235
return result
3336

3437
def to_netjson_loop(self, block, result, index):
35-
result['ddns'] = self.__netjson_ddns(block)
38+
result.setdefault(self.netjson_key, {})
39+
40+
if block['.type'] == 'service':
41+
result[self.netjson_key].setdefault('providers', [])
42+
result[self.netjson_key]['providers'].append(self.__netjson_ddns(block))
43+
else:
44+
result['ddns'] = self.__netjson_ddns(block)
45+
3646
return result
3747

3848
def __netjson_ddns(self, ddns):
39-
del ddns['.type']
40-
_name = ddns.pop('.name')
41-
if _name != 'ddns':
42-
ddns['id'] = _name
49+
_type = ddns.pop('.type')
50+
del ddns['.name']
51+
52+
if _type == 'service':
53+
ddns_schema = self._schema.get('properties').get('providers').get('items')
54+
return self.type_cast(ddns, schema=ddns_schema)
55+
4356
return self.type_cast(ddns)

0 commit comments

Comments
 (0)