@@ -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