# needed by the controller. This is called by the "vif" script,
# which is run when virtual interfaces are added and removed.
-# Copyright (C) 2009 Nicira Networks, Inc.
+# Copyright (C) 2009, 2010 Nicira Networks, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# 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:
vm_uuid = session.xenapi.VM.get_uuid(vif_rec["VM"])
# Data to allow vNetManager to associate VIFs with xapi data
- 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))
+ vif_info = []
+ vif_info.append(('xs-network-uuid', net_rec["uuid"]))
+ vif_info.append(('xs-vif-mac', vif_rec["MAC"]))
+ vif_info.append(('xs-vif-uuid', vif_rec["uuid"]))
+ vif_info.append(('xs-vm-uuid', vm_uuid))
+ for key, value in vif_info:
+ print("-- set interface vif%s.%s external-ids:\"%s\"=\"%s\""
+ % (domid, devid, key, value))
# vNetManager needs to know the network UUID(s) associated with
# each datapath. Normally interface-reconfigure adds them, but
# ovs-vswitchd connection to vNetManager and setting this
# configuration variable, but vNetManager can tolerate that.
if not net_rec['PIFs']:
- key = 'bridge.%s.xs-network-uuids' % net_rec['bridge']
- value = net_rec['uuid']
- vif_info.append('--del-match=%s=*' % key)
- vif_info.append('--add=%s=%s' % (key, value))
+ bridge = net_rec['bridge']
+
+ xs_network_uuid = net_rec['uuid']
+ print("-- br-set-external-id %s %s %s"
+ % (bridge, "xs-network-uuids", xs_network_uuid))
+
+ xs_network_name = net_rec['name_label']
+ print("-- br-set-external-id %s %s %s"
+ % (bridge, "xs-network-names", xs_network_name))
finally:
session.xenapi.session.logout()
- print ' '.join(vif_info)
if __name__ == '__main__':
if len(sys.argv) != 3: