copy_ifaces.py copies assignments with new IDs

This commit is contained in:
Ilya Kharin 2015-03-05 16:36:00 +03:00
parent 1f462af9a8
commit fedafe6284
1 changed files with 14 additions and 2 deletions

View File

@ -9,6 +9,16 @@ def main():
yield (iface['name'],
iface['assigned_networks'])
def merge(src, dst):
mapping = dict((a['name'], a['id']) for _, ns in dst for a in ns)
for name, networks in src:
yield (name,
[{
'id': mapping[n['name']],
'name': n['name'],
}
for n in networks])
def push(ifaces, assignments):
for iface in ifaces:
networks = assignments.get(iface['name'], [])
@ -19,8 +29,10 @@ def main():
src = yaml.load(open(sys.argv[1]))
dst = yaml.load(open(sys.argv[2]))
assignments = pull(src)
ifaces = push(dst, dict(assignments))
src_assign = pull(src)
dst_assign = pull(dst)
assign = merge(src_assign, dst_assign)
ifaces = push(dst, dict(assign))
yaml.dump(list(ifaces), stream=sys.stdout, default_flow_style=False)