From d21e9214c45a1fa8703b8d8dd1900024fb3b8ebc Mon Sep 17 00:00:00 2001 From: smbaker Date: Mon, 7 Jan 2013 15:11:47 -0800 Subject: [PATCH] support passing a list of dicts as the slice interface tag to configure multiple interfaces --- sliver_libvirt.py | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/sliver_libvirt.py b/sliver_libvirt.py index c5b4bbc..ed43088 100644 --- a/sliver_libvirt.py +++ b/sliver_libvirt.py @@ -174,20 +174,33 @@ class Sliver_Libvirt(Account): try: tags = rec['rspec']['tags'] if 'interface' in tags: - interface = eval(tags['interface']) - if 'vlan' in interface: - vlanxml = "" % interface['vlan'] - else: - vlanxml = "" - if 'bridge' in interface: - xml = """ - - - %s - - -""" % (interface['bridge'], vlanxml) - logger.log('sliver_libvirty.py: interface XML is: %s' % xml) + interfaces = eval(tags['interface']) + if not isinstance(interfaces, (list, tuple)): + # if interface is not a list, then make it into a singleton list + interfaces = [interfaces] + tag_xml = "" + for interface in interfaces: + if 'vlan' in interface: + vlanxml = "" % interface['vlan'] + else: + vlanxml = "" + if 'bridge' in interface: + tag_xml = tag_xml + """ + + + %s + + + """ % (interface['bridge'], vlanxml) + else: + tag_xml = tag_xml + """ + + + + """ + xml = tag_xml + logger.log('sliver_libvirty.py: interface XML is: %s' % xml) + except: logger.log('sliver_libvirt.py: ERROR parsing "interface" tag for slice %s' % rec['name']) logger.log('sliver_libvirt.py: tag value: %s' % tags['interface']) -- 2.43.0