From: smbaker Date: Mon, 7 Jan 2013 23:11:47 +0000 (-0800) Subject: support passing a list of dicts as the slice interface tag to configure multiple... X-Git-Tag: nodemanager-2.1-18~1 X-Git-Url: http://git.onelab.eu/?p=nodemanager.git;a=commitdiff_plain;h=d21e9214c45a1fa8703b8d8dd1900024fb3b8ebc support passing a list of dicts as the slice interface tag to configure multiple interfaces --- 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'])