This is the mail archive of the cluster-cvs@sourceware.org mailing list for the cluster.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

cluster: STABLE3 - fence_*.py: Fix Python (fencing.py based) scriptsto force stdout close


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=dc39945e601fe9a8b76ecc7f8879f459a3b3790b
Commit:        dc39945e601fe9a8b76ecc7f8879f459a3b3790b
Parent:        da4c845868babd8a440d1d138cc4d94fb6a15a46
Author:        Jan Friesse <jfriesse@redhat.com>
AuthorDate:    Fri Feb 27 12:28:38 2009 +0100
Committer:     Jan Friesse <jfriesse@redhat.com>
CommitterDate: Fri Feb 27 12:38:24 2009 +0100

fence_*.py: Fix Python (fencing.py based) scripts to force stdout close

This feature is advise from Jim Meyering. On the beginning
of script, we register end callback, which close stdout and
show error, if this wasn't successful.
---
 fence/agents/alom/fence_alom.py               |    2 ++
 fence/agents/apc/fence_apc.py                 |    2 ++
 fence/agents/bladecenter/fence_bladecenter.py |    2 ++
 fence/agents/drac/fence_drac5.py              |    2 ++
 fence/agents/eps/fence_eps.py                 |    2 ++
 fence/agents/ilo/fence_ilo.py                 |    2 ++
 fence/agents/ldom/fence_ldom.py               |    3 ++-
 fence/agents/lib/fencing.py.py                |    9 +++++++++
 fence/agents/lpar/fence_lpar.py               |    2 ++
 fence/agents/virsh/fence_virsh.py             |    2 ++
 fence/agents/vmware/fence_vmware.py           |    2 ++
 fence/agents/wti/fence_wti.py                 |    2 ++
 12 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/fence/agents/alom/fence_alom.py b/fence/agents/alom/fence_alom.py
index 9f10650..969ed21 100644
--- a/fence/agents/alom/fence_alom.py
+++ b/fence/agents/alom/fence_alom.py
@@ -47,6 +47,8 @@ def main():
 			"action", "ipaddr", "login", "passwd", "passwd_script",
 			"secure",  "test" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	# Default command is sc>
diff --git a/fence/agents/apc/fence_apc.py b/fence/agents/apc/fence_apc.py
index 653d214..ca5d2ac 100755
--- a/fence/agents/apc/fence_apc.py
+++ b/fence/agents/apc/fence_apc.py
@@ -177,6 +177,8 @@ def main():
 			"action", "ipaddr", "login", "passwd", "passwd_script",
 			"secure", "port", "switch", "test", "separator" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## 
diff --git a/fence/agents/bladecenter/fence_bladecenter.py b/fence/agents/bladecenter/fence_bladecenter.py
index 62cff00..a5da620 100644
--- a/fence/agents/bladecenter/fence_bladecenter.py
+++ b/fence/agents/bladecenter/fence_bladecenter.py
@@ -89,6 +89,8 @@ def main():
 			"action", "ipaddr", "login", "passwd", "passwd_script",
 			"cmd_prompt", "secure", "port", "identity_file", "separator" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## 
diff --git a/fence/agents/drac/fence_drac5.py b/fence/agents/drac/fence_drac5.py
index 41bd1d0..dbe05d1 100755
--- a/fence/agents/drac/fence_drac5.py
+++ b/fence/agents/drac/fence_drac5.py
@@ -54,6 +54,8 @@ def main():
 			"cmd_prompt", "secure",
 			"drac_version", "module_name" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## 
diff --git a/fence/agents/eps/fence_eps.py b/fence/agents/eps/fence_eps.py
index 921487b..f751d29 100644
--- a/fence/agents/eps/fence_eps.py
+++ b/fence/agents/eps/fence_eps.py
@@ -98,6 +98,8 @@ def main():
 			"test", "port", "hidden_page", "no_login", "no_password",
 			"separator" ]
 
+	atexit.register(atexit_handler)
+
 	eps_define_new_opts()
 
 	options = check_input(device_opt,process_input(device_opt))
diff --git a/fence/agents/ilo/fence_ilo.py b/fence/agents/ilo/fence_ilo.py
index 0cf416e..13263d3 100755
--- a/fence/agents/ilo/fence_ilo.py
+++ b/fence/agents/ilo/fence_ilo.py
@@ -58,6 +58,8 @@ def main():
 			"action", "ipaddr", "login", "passwd", "passwd_script",
 			"ssl", "ribcl" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	options["-z"] = 1
diff --git a/fence/agents/ldom/fence_ldom.py b/fence/agents/ldom/fence_ldom.py
index 390d072..7bcca39 100644
--- a/fence/agents/ldom/fence_ldom.py
+++ b/fence/agents/ldom/fence_ldom.py
@@ -86,7 +86,8 @@ def main():
 			"secure",  "identity_file", "test" , "port", "cmd_prompt",
 			"separator" ]
 
-    	
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## 
diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index b0b22a7..a4548fd 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -3,6 +3,7 @@
 import sys, getopt, time, os
 import pexpect, re
 import telnetlib
+import atexit
 
 ## do not add code here.
 #BEGIN_VERSION_GENERATION
@@ -220,6 +221,14 @@ class fspawn(pexpect.spawn):
 			options["debug_fh"].write(self.before + self.after)
 		return result
 
+def atexit_handler():
+	try:
+		sys.stdout.close()
+		os.close(1)
+	except IOError:
+		sys.stderr.write("%s failed to close standard output\n"%(sys.argv[0]))
+		sys.exit(1)
+
 def version(command, release, build_date, copyright_notice):
 	print command, " ", release, " ", build_date
 	if len(copyright_notice) > 0:
diff --git a/fence/agents/lpar/fence_lpar.py b/fence/agents/lpar/fence_lpar.py
index c6e4ba9..9cb117d 100644
--- a/fence/agents/lpar/fence_lpar.py
+++ b/fence/agents/lpar/fence_lpar.py
@@ -129,6 +129,8 @@ def main():
 			"secure", "partition", "managed", "hmc_version", "cmd_prompt",
 			"separator" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## 
diff --git a/fence/agents/virsh/fence_virsh.py b/fence/agents/virsh/fence_virsh.py
index bdf4e88..2c1018a 100644
--- a/fence/agents/virsh/fence_virsh.py
+++ b/fence/agents/virsh/fence_virsh.py
@@ -64,6 +64,8 @@ def main():
 			"action", "ipaddr", "login", "passwd", "passwd_script",
 			"secure", "identity_file", "test", "port", "separator" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## Defaults for fence agent
diff --git a/fence/agents/vmware/fence_vmware.py b/fence/agents/vmware/fence_vmware.py
index 3d0f7a9..42dc097 100644
--- a/fence/agents/vmware/fence_vmware.py
+++ b/fence/agents/vmware/fence_vmware.py
@@ -281,6 +281,8 @@ def main():
 		       "test", "port", "separator", "exec", "vmware_type",
 		       "vmware_datacenter", "secure" ]
 
+	atexit.register(atexit_handler)
+
 	vmware_define_defaults()
 
 	options = check_input(device_opt, process_input(device_opt))
diff --git a/fence/agents/wti/fence_wti.py b/fence/agents/wti/fence_wti.py
index 984d0c7..a8927a9 100644
--- a/fence/agents/wti/fence_wti.py
+++ b/fence/agents/wti/fence_wti.py
@@ -78,6 +78,8 @@ def main():
 			"cmd_prompt", "secure", "port", "no_login", "no_password",
 			"test", "separator" ]
 
+	atexit.register(atexit_handler)
+
 	options = check_input(device_opt, process_input(device_opt))
 
 	## 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]