# Query XAPI for the information we need using the vif's opaque reference
def dump_vif_info(domid, devid, vif_ref):
+ vif_info = []
+ session = XenAPI.xapi_local()
+ session.xenapi.login_with_password("root", "")
try:
- session = XenAPI.xapi_local()
- session.xenapi.login_with_password("root", "")
vif_rec = session.xenapi.VIF.get_record(vif_ref)
net_rec = session.xenapi.network.get_record(vif_rec["network"])
- vm_rec = session.xenapi.VM.get_record(vif_rec["VM"])
+ vm_uuid = session.xenapi.VM.get_uuid(vif_rec["VM"])
# Data to allow vNetManager to associate VIFs with xapi data
- sys.stdout.write('--add=port.vif%s.%s.net-uuid=%s '
- % (domid, devid, net_rec["uuid"]))
- sys.stdout.write('--add=port.vif%s.%s.vif-mac=%s '
- % (domid, devid, vif_rec["MAC"]))
- sys.stdout.write('--add=port.vif%s.%s.vif-uuid=%s '
- % (domid, devid, vif_rec["uuid"]))
- sys.stdout.write('--add=port.vif%s.%s.vm-uuid=%s '
- % (domid, devid, vm_rec["uuid"]))
+ add_port = '--add=port.vif%s.%s' % (domid, devid)
+ vif_info.append('%s.net-uuid=%s' % (add_port, net_rec["uuid"]))
+ vif_info.append('%s.vif-mac=%s' % (add_port, vif_rec["MAC"]))
+ vif_info.append('%s.vif-uuid=%s' % (add_port, vif_rec["uuid"]))
+ vif_info.append('%s.vm-uuid=%s' % (add_port, vm_uuid))
# vNetManager needs to know the network UUID(s) associated with
# each datapath. Normally interface-reconfigure adds them, but
# There may still be a brief delay between the initial
# ovs-vswitchd connection to vNetManager and setting this
# configuration variable, but vNetManager can tolerate that.
- if len(net_rec['PIFs']) == 0:
+ if not net_rec['PIFs']:
key = 'bridge.%s.xs-network-uuids' % net_rec['bridge']
value = net_rec['uuid']
- sys.stdout.write('--del-match=%s=* ' % key)
- sys.stdout.write('--add=%s=%s ' % (key, value))
+ vif_info.append('--del-match=%s=*' % key)
+ vif_info.append('--add=%s=%s' % (key, value))
finally:
session.xenapi.session.logout()
+ print ' '.join(vif_info)
if __name__ == '__main__':
- if (len(sys.argv) != 3):
+ if len(sys.argv) != 3:
sys.stderr.write("ERROR: %s <domid> <devid>\n" % sys.argv[0])
sys.exit(1)
vif_ref = get_vif_ref(domid, devid)
if not vif_ref:
sys.stderr.write("ERROR: Could not find interface vif%s.%s\n"
- % (domid, devid))
+ % (domid, devid))
sys.exit(1)
dump_vif_info(domid, devid, vif_ref)