public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* cluster: STABLE3 - fence_*.py: Fix Python (fencing.py based) scripts to force stdout close
@ 2009-02-27 11:38 Jan Friesse
  0 siblings, 0 replies; only message in thread
From: Jan Friesse @ 2009-02-27 11:38 UTC (permalink / raw)
  To: cluster-cvs-relay

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))
 
 	## 


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-02-27 11:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-27 11:38 cluster: STABLE3 - fence_*.py: Fix Python (fencing.py based) scripts to force stdout close Jan Friesse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).