[ovs-dev] [PATCH] dump-vif-details: Safeguard 'finally' code

Reid Price reid at nicira.com
Wed Oct 28 21:25:13 UTC 2009


This moves the try statement in dump_vif_info to exclude session
initialization, so that finally will not obscure the original exception
with a new exception related to the session variable when logins fail.

Additionally some small python style and xapi streamlining changes were made:
- "print <str>," used in place of "sys.stdout.write(<str> )"
- "VM.get_uuid" used in place of "VM.get_record(..)['uuid']"
- "not <list>" used in place of "len(<list>) == 0"

Preserved existing tab formatting
---
 .../usr_share_vswitch_scripts_dump-vif-details     |   27 +++++++++-----------
 1 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/xenserver/usr_share_vswitch_scripts_dump-vif-details b/xenserver/usr_share_vswitch_scripts_dump-vif-details
index b0ceb40..85ce7f5 100755
--- a/xenserver/usr_share_vswitch_scripts_dump-vif-details
+++ b/xenserver/usr_share_vswitch_scripts_dump-vif-details
@@ -25,22 +25,19 @@ def get_vif_ref(domid, devid):
 
 # Query XAPI for the information we need using the vif's opaque reference
 def dump_vif_info(domid, devid, vif_ref):
+	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)
+		print '%s.net-uuid=%s' % (add_port, net_rec["uuid"]),
+		print '%s.vif-mac=%s' % (add_port, vif_rec["MAC"]),
+		print '%s.vif-uuid=%s' % (add_port, vif_rec["uuid"]),
+		print '%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
@@ -52,11 +49,11 @@ def dump_vif_info(domid, devid, vif_ref):
 		# 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))
+			print '--del-match=%s=*' % key,
+			print '--add=%s=%s' % (key, value),
 	finally:
 		session.xenapi.session.logout()
 	
@@ -71,7 +68,7 @@ if __name__ == '__main__':
 	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)
-- 
1.5.4.3





More information about the dev mailing list